刚学go,为什么这么写会报错?

Naist
  • 115
package main

import(
    "fmt"
)

type person struct {
    name string
    age int
}

var P person

P.name = "annie"
P.age = 20

func main() {
    fmt.Printf("The person's name is %s", P.name)
}

报错信息:/struct.go:14: syntax error: non-declaration statement outside function body

评论
阅读 8.8k
5 个回答
✓ 已被采纳

你非得在main函数外赋值的话,要这样写

package main

import(
    "fmt"
)

type person struct {
    name string
    age int
}

var P =person{"annie",20}


func main() {
    fmt.Printf("The person's name is %s", P.name)
}

要不然就得这样写

package main

import(
    "fmt"
)

type person struct {
    name string
    age int
}

var P person


func main() {
    P.name="a"
    P.age=10
    fmt.Printf("The person's name is %s", P.name)
}

你copy这个试试

package main

import (
    "fmt"
)

type person struct {
    name string
    age  int
}

func main() {
    var P person
    P.name = "annie"
    P.age = 20
    fmt.Printf("The person's name is %s", P.name)
}

要在main函数中写声明语句

全局变量初始化只初始化一次 且如果不指定则初始化为零值 也就是说

var P person // 这边已经完成了初始化
// 是不是下面在进行赋值操作就不大行了
Amesy
  • 1
新手上路,请多包涵

go不支持在函数外赋值与调用操作, 但可以声明一个变量或者声明并初始化一个变量。

var i string = "golang"
var age int

/*
age = 20   // syntax error: non-declaration statement outside function body
*/

func main() {
    fmt.Println(i, age)
}
撰写回答

登录后参与交流、获取后续更新提醒

宣传栏