Go变量声明要求类型在变量名后,如var port int = 8080;短变量声明:=仅限函数内使用且需至少一个新变量;未初始化变量取类型零值(如int为0、string为"");结构体字段不可用:=单独赋值。

用 var 声明变量时,类型和值的顺序不能颠倒
Go 不允许像 C 或 Java 那样把类型写在变量名前面(如 int x = 1)。var 声明必须是 var name type = value 或 var name type,类型永远在变量名之后。
- 正确:
var port int = 8080
- 错误:
var int port = 8080 // 编译报错:expected 'IDENT', found 'int'
- 如果带初始化,类型可省略:
var host = "localhost" // host 类型自动推导为 string
- 多个同类型变量可批量声明:
var a, b, c int = 1, 2, 3
短变量声明 := 只能在函数内部使用
:= 是 Go 的快捷语法,它隐式调用 var 并自动推导类型,但有严格作用域限制——不能在包级(全局)作用域使用。
- 函数内合法:
func main() { name := "Alice" // 等价于 var name string = "Alice" } - 包级非法:
package main name := "Bob" // 编译报错:syntax error: non-declaration statement outside function body
-
:=要求左边至少有一个新变量名;重复声明已有变量会报错:port := 3000 port := 4000 // 错误:no new variables on left side of :=
零值不是空或 nil,而是类型默认值
Go 中未显式初始化的变量会被赋予对应类型的零值(zero value),这不是 nil(仅用于指针、map、slice、func、channel、interface),也不是 Python 的 None 或 JS 的 undefined。
随缘网络PHP企业网站管理系统V2.0正式发布,该企业网站管理系统采用PHP+MYSQL编写,界面色调风格延续之前1.0版管理系统简洁浅蓝色风格,稍有所变动。变更分类树形目录方式采用jquery库,产品,文章三级无限分类。希望大家能够喜欢。系统中难免有些小问题,希望大家在使用中有什么问题可到本站论坛提出,我们将总结各问题后给予修正并升级。本站再次声明对于免费版系列系统本站不提供QQ电话等技术咨询服
-
int零值是0,string是"",bool是false -
var m map[string]int→m是nil,此时直接m["k"] = 1会 panic;必须先m = make(map[string]int) -
var s []int→s是nil,但可直接用append(s, 1)(Go 允许对 nil slice append)
结构体字段声明不支持简写初始化(除非用字面量)
结构体变量声明不能用 := 单独初始化某个字段,字段赋值必须通过结构体字面量或后续点号赋值完成。
立即学习“go语言免费学习笔记(深入)”;
- 合法:
type Config struct { Port int Host string } cfg := Config{Port: 8080, Host: "0.0.0.0"} // 字面量初始化 - 非法:
var cfg Config cfg.Port := 8080 // 错误::= 不能用于字段赋值
- 合法替代:
cfg.Port = 8080 // 必须先声明,再逐个赋值
- 字段顺序敏感:如果不用键名(
Port: 8080),则必须按定义顺序提供值:cfg2 := Config{8080, "localhost"} // OK,但易错且难维护









