关于go:变量声明与初始化

3次阅读

共计 1152 个字符,预计需要花费 3 分钟才能阅读完成。

变量申明与初始化

// [1]: 在申明变量时指定类型(显示指定变量的类型)// 可用于任何中央
// 与 var name string = "hello world" 雷同
var name string
name = string
/*
 * 类型    变量值 
 * string hello world
 */
var name string = "hello world"

// [2]: 类型推断
// 可用于任何中央

// 不显示指定变量的类型,使它能够被赋予任何类型的值。变量的类型能够在其初始化时,由其余程序动静的地确定

var name = getString()

var name = "hello world"
/*
 * 类型    变量值 
 * string hello world
 */

/* [3]: 短变量申明 类型推断
 * 只能在函数体外部应用
 * 在函数外部,能够应用 := 短赋值语句代替隐式类型的 var 申明。在函数之
 * 外,每个语句都以关键字(var、func 等)结尾,因而 := 结构不可用。* 函数外的申明必须应用 var、func、const 等关键字
 *
 * 当短变量申明在函数体外应用时会报 syntax error: non-declaration    statement outside function body (函数体之外的非申明语句) 谬误
 * 
 * package main
 *
 * import "fmt"
 *
 * name := "hello world"
 * func main() {*     fmt.Printf("%T %v", name, name)
 * }
 *
 */

name := "hello world"
/*
 * 类型    变量值 
 * string hello world
 */

类型推断带来的益处: 类型推断能够明显提高程序的灵活性,使代码重构变得更加容易,同时又不会带来额定的累赘,更不会损失程序的运行效率。

类型确定在编译期间实现,不会对程序的运行效率产生任何影响。

能够在申明时就初始化变量

var memo map[string]int = make(map[string]int) 

var res *TreeNode = &TreeNode{Val:maxVal}

变量的重申明

// 变量重申明即对曾经申明过的变量再次申明
// 该处重申明并不精确,因为并未调配新的内存,精确的说应该是短变量申明对其从新赋值
// 变量重申明的前提条件:// 1. 因为变量的类型在其初始化时就曾经确定了,所以对它再次申明时赋予的类型必须与其本来的类型雷同,否则会产生编译谬误。// 2. 变量的重申明只可能产生在某一个代码块中。// 3. 变量的重申明只有在应用短变量申明时才会产生,否则无奈通过编译。// 4. 被“申明并赋值”的变量必须是多个,并且其中至多有一个是新的变量。var err error
// 没有为 err 从新分配内存,err 被从新赋值
// 对 err 进行了重申明
n, err := io.WriteString(os.Stdout, "Hello World")
正文完
 0