写点什么

Go- 变量

用户头像
HelloBug
关注
发布于: 3 小时前
Go- 变量

Go 学习笔记,学习内容《Go入门指南》


代码示例可以直接运行,主要介绍以下内容:

  • 变量可不显示初始化

  • 变量的作用域

  • 变量类型可由编译器推导

  • 变量可使用简短声明语法

  • 变量值类型和引用类型

  • 变量的打印

  • 变量的声明和赋值语法

  • 变量赋值时的抛弃值

  • 变量的声明位置

  • 全局变量声明可不使用,局部变量声明必须使用


package main
import ( "fmt" "os" "runtime")
func main() { /* 1、当声明一个变量时,系统自动赋予他该变量的零值 int 0 float 0.0 bool false string "" 指针 nil 2、变量命名遵循小驼峰命名法 3、如果全局变量需要被外部包使用,则使用大驼峰命名法 4、函数内声明的变量为局部变量,函数外声明的变量时局部变量,代码块中声明的变量作用域在代码块中 5、变量可以在编译期间进行赋值,也可以在运行期间进行赋值 6、一般情况下,当变量a和变量b的类型相同时,才进行a=b的赋值 */ var a int var b bool var c float32 // float and complex were removed. Use float32 or float64 var str string var p *int /* 以上代码等价于 var ( a int b bool str string ) */ fmt.Println(a, b, c, str, p) // 输出:0 false 0 <nil>
var x int = 20 // 声明时赋值 var i = 10 // 变量类型由编译器推导
/* 编译错误:syntax error: unexpected newline, expecting type 因为编译器无法推断类型 */ //var y
var n int64 = 2 // 若自动推断类型为 int,这里需要显示指定 int64 类型 fmt.Println(x, i, n)
var ( HOME = os.Getenv("HOME") USER = os.Getenv("USER") GOROOT = os.Getenv("GOROOT") ) fmt.Println(HOME, USER, GOROOT)
/* var 方式声明的变量,主要用于声明包级别的全局变量, 当在行数内声明局部变量时,应使用简短声明语法 */ w := 1 m := "Hi" fmt.Println(w, m)
/* 示例 */ var goos string = runtime.GOOS fmt.Printf("The operation system is: %s\n", goos) path := os.Getenv("PATH") fmt.Printf("Path is %s\n", path)
/* 值类型和引用类型(即值和指针) Go 语言中的引用类型包括:指针、map、slices、maps、channel, 被引用的变量保存在堆中,以便进行垃圾回收,并且拥有更大的内存空间 */
/* 打印函数 %s 字符串标志符 %v 使用类型的默认输出格式标志符 */ fmt.Sprintf("%s", "string") // 无输出? fmt.Println("END") fmt.Print("%s", "string") // 无换行输出:%sstring fmt.Println("END") fmt.Printf("%s", "string") // 无换行输出:string fmt.Println("END") fmt.Println("%s", "string") // 换行输出:%sstring 使用默认输出格式输出格式 %v fmt.Println("END")
// 编译错误:undefined: num //num = 1
// 编译错误:no new variables on left side of := //num := 1 //num := 2
num := 1 num = 2 fmt.Println(num) // 输出:2
/* 若声明变量,但是没有使用,编译时出错:xxx declared but not used 声明全局变量可以不使用 */
var a1, b1, c1 int // 变量可以在同一行声明 a1, b1, c1 = 5, 6, 8 // 变量可以在同一行赋值 fmt.Println(a1, b1, c1)
// 编译错误:cannot use "abc" (type untyped string) as type int in assignment //a1 = "abc"
// 交换两个变量的值 a1, b1 = b1, a1 fmt.Println(a1, b1)
// _ 表示抛弃值 _, d1 := 2, 1000 //fmt.Println(_) // 编译错误:cannot use _ as value fmt.Println(d1) // 输出:1000
// 变量除了可以在全局声明中初始化,也可以在 init 函数中初始化}
复制代码


发布于: 3 小时前阅读数: 6
用户头像

HelloBug

关注

还未添加个人签名 2018.09.20 加入

还未添加个人简介

评论

发布
暂无评论
Go- 变量