Go变量声明简短模式

简短声明模式只能在函数内部使用

var (
	size := 0
	max_size = size*2
)

func main() {
	fmt.Println(size , max_size)
}

变量声明的简短模式不能提供数据类型,也只能在函数内部使用.

简短声明模式的作用域问题

var p *int

func foo() (*int, error) {
	var i int = 5
	return &i, nil
}

func bar() {
	//use p
	fmt.Println(*p)
}

func main() {
	p, err := foo()
    fmt.Println(*p) //5
	if err != nil {
		fmt.Println(err)
		return
	}
	bar() // panic: runtime error: invalid memory address or nil pointer dereference
	fmt.Println(*p) 
}

main()函数里的p是新定义的变量,导致指定到bar()时程序,全局变量依然是nil.在Go语言中,对于使用 := 定义的变量,如果新变量与同名已定义的变量不再同一个作用域中,那么Go会重新定义这个变量.

简短声明模式不能声明结构体内部的字段

type info struct {
	result int
}
func work() (int,error) {
	return 13,nil
}
func main() {
	var data info
	data.result, err := work() //此处声明了结构体内部的字段
	fmt.Printf("info: %+v\n",data)
}

上面的程序由于使用了简短声明模式去声明了结构体内部的字段,会导致程序编译无法通过.

相关推荐

  1. Go变量声明简短模式

    2024-04-01 16:24:01       34 阅读
  2. 【Golang入门教程】Go语言变量声明

    2024-04-01 16:24:01       37 阅读
  3. <span style='color:red;'>Go</span>-<span style='color:red;'>变量</span>

    Go-变量

    2024-04-01 16:24:01      63 阅读
  4. 如何在PHP中声明一个变量

    2024-04-01 16:24:01       66 阅读
  5. 变量声明,值是undefined吗?

    2024-04-01 16:24:01       55 阅读
  6. Rust 学习笔记 - 变量声明与使用

    2024-04-01 16:24:01       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 16:24:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 16:24:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 16:24:01       82 阅读
  4. Python语言-面向对象

    2024-04-01 16:24:01       91 阅读

热门阅读

  1. springcloud微服务调用报错

    2024-04-01 16:24:01       34 阅读
  2. Docker安装Mysql

    2024-04-01 16:24:01       38 阅读
  3. python笔记(8)Tuple(元组)

    2024-04-01 16:24:01       34 阅读
  4. C++ 实现MyString 类(输入输出运算符重载)

    2024-04-01 16:24:01       37 阅读