鱼C论坛

 找回密码
 立即注册
查看: 1680|回复: 19

[学习笔记] 二、Go语言创建变量

[复制链接]
发表于 2022-4-1 19:57:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 isdkz 于 2022-11-13 09:55 编辑


Go 语言是静态类型的语言,需要对变量进行声明,

不过跟其它语言不同的是 Go 语言声明变量的时候 类型名 在 变量名 的右边

一、一行声明一个变量

var name type


var 是关键字(固定不变),name 是变量名,type 类型

虽然这种声明只指定了类型,但是 Go 会对其进行隐式初始化,

比如 stirng 类型初始化为空字符串,int 类型初始化为 0,

float 初始化为 0.0,bool 类型初始化为 false,指针类型(引用类型)初始化为 nil

在声明的同时也可以初始化,注意:跟 python 不同的是,Go 中的字符串一定要用双引号

  1. var object string = "学会Go"
复制代码


也可以不指定类型,它会自动类型推导

  1. var object = "学会Go"
复制代码


不过需要注意的是,如果你的右值带有小数点,

在不指定类型的情况下,编译器会将你的变量声明为 float 64,

但是很多情况下,我们并不需要这么高的精度(占用的内存空间更大)


这种情况下,推荐指定类型

  1. var rate float32 = 0.89
复制代码


二、多个变量一起声明

var (
    name string
    age int
    gender string
)


三、声明和初始化一个变量
使用 := (推导声明写法或者短类型声明法:编译器会自动根据右值类型推断出左值的对应类型。),

可以声明一个变量,并对其进行(显式)初始化。

注意:这种方法只能用于函数内部。且只能用于变量首次赋值。(因为 := 是声明并赋初值,变量不能多次声明)

object := "学会GO"

// 等价于

var object string = "学会GO"

// 等价于

var object = "学会GO"

四、声明和初始化多个变量
name, age := "wangbm", 28


这种方法,也经常用于变量的交换
  1. var a int = 100
  2. var b int = 200
  3. b, a = a, b
复制代码


五、new 函数声明一个指针变量

变量分为两种 普通变量 和 指针变量(引用变量)

普通变量,存放的是数据本身,而指针变量存放的是数据的地址。


package main

import "fmt"

func main()  {
    var age int = 28
    var ptr = &age  // &后面接变量名,表示取出该变量的内存地址
    fmt.Println("age: ", age)
    fmt.Println("ptr: ", ptr)
}


new 函数 是 Go 里的一个内建函数。

使用表达式 new(Type) 将创建一个Type类型的匿名变量,初始化为Type类型的零值,

然后返回变量地址,返回的指针类型为*Type


package main

import "fmt"

func main()  {
    ptr := new(int)
    fmt.Println("ptr address: ", ptr)
    fmt.Println("ptr value: ", *ptr)  // * 后面接指针变量,表示从内存地址中取出值
}


不管哪种方法,变量/常量都只能声明一次,声明多次,编译就会报错。

但也有例外,这就要说到一个特殊变量:匿名变量,也称作占位符,或者空白标识符,用下划线表示。

匿名变量,优点有三:

  • 不分配内存,不占用内存空间
  • 不需要你为命名无用的变量名而纠结
  • 多次声明不会有任何问题


通常我们用匿名变量接收必须接收,但是又不会用到的值。

func GetData() (int, int) {
    return 100, 200
}
func main(){
    a, _ := GetData()
    _, b := GetData()
    fmt.Println(a, b)
}

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
ciwmy + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-2 00:53:03 | 显示全部楼层

回帖奖励 +5 鱼币

666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-2 03:59:43 From FishC Mobile | 显示全部楼层

回帖奖励 +5 鱼币

它擅长写哪类程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-2 04:14:14 | 显示全部楼层

回帖奖励 +5 鱼币

你搁这做笔记呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-2 08:15:40 | 显示全部楼层
本帖最后由 isdkz 于 2022-4-2 08:23 编辑
yjsx86 发表于 2022-4-2 04:14
你搁这做笔记呢


对呀,我就是做笔记呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-2 08:17:53 | 显示全部楼层
wp231957 发表于 2022-4-2 03:59
它擅长写哪类程序

据我的了解,一般是用于做 Docker 容器还有区块链的开发,

我是专业需要,我想用它做安全
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-2 10:37:20 | 显示全部楼层

回帖奖励 +5 鱼币

大佬啊,Go语言都会!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-2 11:09:49 | 显示全部楼层
1molHF 发表于 2022-4-2 10:37
大佬啊,Go语言都会!

学习阶段
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-2 11:13:10 | 显示全部楼层

回帖奖励 +5 鱼币

我感觉我真的跟不上时代了,(学了C,你告诉我要学java,学了java又说要学Python,现在还有GO?我觉得,我还是好好学我的web前端吧)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-2 11:15:58 | 显示全部楼层
C丁洞杀O 发表于 2022-4-2 11:13
我感觉我真的跟不上时代了,(学了C,你告诉我要学java,学了java又说要学Python,现在还有GO?我觉得,我 ...

遵从本心就好,用什么工具并不是那么重要,

要锻炼的是使用工具的技巧

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
ciwmy + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-2 11:30:42 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-2 11:40:42 From FishC Mobile | 显示全部楼层
C丁洞杀O 发表于 2022-4-2 11:13
我感觉我真的跟不上时代了,(学了C,你告诉我要学java,学了java又说要学Python,现在还有GO?我觉得,我 ...

光学前端不行,总感觉差点啥,其实有条件要前后端一起学
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-2 14:50:22 | 显示全部楼层
wp231957 发表于 2022-4-2 11:40
光学前端不行,总感觉差点啥,其实有条件要前后端一起学

我说了C,JAVA,Python,我都会,然后就,反正GO没有他们好,所以我就不学了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-2 15:38:18 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-2 18:46:44 | 显示全部楼层

回帖奖励 +5 鱼币

两耳不闻窗外事 一心学习C语言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-2 21:44:12 | 显示全部楼层

回帖奖励 +5 鱼币

加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-3 00:52:27 | 显示全部楼层
66666666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-3 15:10:19 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-7 11:34:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-12 23:07:09 | 显示全部楼层
高手
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 18:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表