
正文
go语言中的var go语言 var
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
go语言中怎么把一个变量转成常量?
利用 const 可以定义一个常量
const i=100
利用var 可以定义一个变量
var t int
当你将变量赋值以后,在程序不进行值的修改就可以当常量用
t=i
在一个包里,定义变量时使用小写,格外定义个取值方法。则,在包外可以通过这个取值方法获得值,直接无法使用。如果要实现只在函数内部使用,则可以将变量定义在函数内部。
func GetValue() int {
t:=i
return t
}
相关问答
Q1: go语言中数组使用的注意事项和细节
1、数组是多个 相同类型 go语言中的var的数据的组合,一个数组一旦声明/定义go语言中的var了,其 长度是固定的,不能动态变化 。
2、var arr []int 这时arr就是一个slice 切片 。
3、数组中的元素可以是任何数据类型,包括值类型和引用类型,但是 不能混用 。
4、数组创建后,如果没有赋值,有默认值如下go语言中的var:
数值类型数组: 默认值为 0
字符串数组: 默认值为 ""
bool数组: 默认值为 false
5、使用数组的步骤:
(1)声明数组并开辟空间
(3)给数组各个元素赋值
(3)使用数组
6、数组的下标是从0开始的。
7、数组下标必须在指定范围内使用,否则报panic:数组越界,比如var arr [5]int的有效下标为0~4.
8、Go的数组属于 值类型 ,在默认情况下是 值传递 ,因此会进行值拷贝。 数组间不会相互影响。
9、如想在其go语言中的var他函数中去修改原来的数组,可以使用 引用传递 (指针方式)。
10、长度是数组类型的一部分,在传递函数参数时,需要考虑数组的长度,看以下案例:
题1:编译错误,因为不能把[3]int类型传递给[]int类型,前者是数组,后者是切片go语言中的var;
题2:编译错误,因为不能把[3]int类型传递给[4]int类型;
题3:编译正确,因为[3]int类型传给[3]int类型合法。
Q2: go语言中的反射
import (
"fmt"
"reflect"
)
func reflecType(x interface{}){
v := reflect.TypeOf(x)
fmt.Println("type:%v\n", v)
fmt.Println("type name:%v , rtpe kind:%v \n", v.getName(), v.getType())
}
type Cat struct{}
//通过反射设置变量go语言中的var的值
func reflectSetValue1(x interface{}){
v := reflect.ValueOf(x)
if v.Kind() == reflect.Int64{
v.SetInt(200) //修改go语言中的var的是副本, reflect 包会引发panic
}
}
//通过反射设置变量go语言中的var的值
func reflectSetValue2(x interface{}){
v := reflect.ValueOf(x)
//反射中使用Elem()获取指针对应go语言中的var的值
if v.Elem().Kind() == reflect.Int64{
v.Elem().SetInt(200)
}
}
func main(){
var a float32 = 3.14
reflectType(a) //type name:float32 type kind:float32
var b int64 = 100
reflectType(b) // type name :int64 type kind :int64
var c = Cat{}
reflectType(c) // type name :Cat type kind :struct
reflectSetValue1(b)
fmt.Println(b) //依然为100
reflectSetValue2(b)
}
Q3: go语言中的var关键字是声明变量还是定义+初始化变量
定义+初始化。
举个例子
var num int //定义一个整形变量num,默认为0
var number int = 21 //定义一个整型变量number,并赋值为21
关于go语言中的var和go语言 var的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







