5. 变量定义
变量特性
1. 变量是内存中的一块存储单元
2. 存储单元包含变量名和类型 var xx int
变量的定义方式: 1. var xx int 2. var xxx = 123 | "123" 根据赋值自动解析类型 ,这里要注意字符串一定是双引号 3. xxxx := 123 使用表达式 := 赋值并定义类型
初始值判断
package main import "fmt" func main() { // var xxx int // var xxxe = 11.2 xxxx := "sfsfasdfasdf" fmt.Println(xxxx) var str1 string fmt.Println(str1) var int1 int fmt.Println(int1) } C:/Go/bin/go.exe run test.go [D:/goproject/first/test] sfsfasdfasdf 0 成功: 进程退出代码 0.
变量类型
基本数据类型
Go 的基本类型有 bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr byte // uint8 的别名 rune // int32 的别名 // 表示一个 Unicode 码点 float32 float64 complex64 complex128
升华部分,请问以下代码能正常运行吗
func newConfigSong(path string)(*ServerSong, error){ zz,err := os.Open(path) if err != nil { log.Println("read config file failed on Newconfig") } defer zz.Close() // var conf = &ServerSong{} var conf *ServerSong fmt.Printf("%T,%v",conf,conf) err = yaml.NewDecoder(zz).Decode(conf) if err != nil { log.Println("Decode error") } return conf, err }
答案是不能 发现通过var 定义后未初始化那么此时 conf为 nil 无法进行Decode 操作。同理以下书写方式也不可以
func newConfigSong(path string)(conf *ServerSong,err error){
zz,err := os.Open(path)
if err != nil {
log.Println("read config file failed on Newconfig")
}
defer zz.Close()
// var conf = &ServerSong{}
fmt.Printf("%T,%v",conf,conf)
err = yaml.NewDecoder(zz).Decode(conf)
if err != nil {
log.Println("Decode error")
}
return conf, err
}
本文来自博客园,作者:萱乐庆foreverlove,转载请注明原文链接:https://www.cnblogs.com/leleyao/p/11537331.html