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

浙公网安备 33010602011771号