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
    
    }
 

 

posted @ 2019-09-17 21:23  萱乐庆foreverlove  阅读(208)  评论(0编辑  收藏  举报