
Go 数据类型
基本数据类型
bool |
string |
int int8 int16 int32 int64 |
uint uint8 uint16 uint32 uint64 uintptr |
byte //uint8的别名 |
string //uint32的别名,表示Unicode代码点float32 float64 |
float32 float64 |
complex64 complex128 |
类型转化
与其他主要编程语言的差异
- Go 语言不允许隐式类型转换
- 别名和原有类型也不能进行隐式类型转换
是否可以隐式转换?
创建一个测试类测试
package type_test
import "testing"
func TestImpicit(t *testing.T) {
var a int =1
var b int64
b=a
t.Log(a,b)
}
我们发现报错,且不能隐式转换
我们修改一下代码并进行显示的类型转换
package type_test
import "testing"
func TestImpicit(t *testing.T) {
var a int =1
var b int64
b= int64(a)
t.Log(a,b)
}
我们发现已经过了测试
别名是否可以隐式转换?
修改一个测试类代码
package type_test
import "testing"
type MyInt int64
func TestImpicit(t *testing.T) {
var a int =1
var b int64
b= int64(a)
var c MyInt
c= b
t.Log(a,b,c)
}
我们同样发现报错,且不能隐式转换
我们修改一下代码并进行显示的类型转换并运行
package type_test
import "testing"
type MyInt int64
func TestImpicit(t *testing.T) {
var a int =1
var b int64
b= int64(a)
var c MyInt
c= MyInt(b)
t.Log(a,b,c)
}
类型的预定义值
- math.MaxInt64
- math.MaxFloat64
- math.MaxUint32
指针类型
与其他主要编程语言的差异
- 不支持指针运算
- string 是值类型,其默认的初始化值为空字符串,而不是nil
是否支持指针运算?
修改代码
package type_test
import (
"fmt"
"testing"
)
func TestPoint(t *testing.T) {
a := 1
aPtr := &a
//不支持aPtr进行指针运算的(不过检测)
//aPtr = aPtr + 1
//获取类型
fmt.Printf("%T %T", a, aPtr)
}
string类型能否为nil?
添加新测试方法的代码
package type_test
import (
"fmt"
"testing"
)
func TestString(t *testing.T) {
var s string
fmt.Println("*" + s + "*")
fmt.Println(len(s))
//可以这样判断非空
if s == "" {
fmt.Println("s=长度为0的字符串")
}
//不过检测
// if s != nil {
// fmt.Println("s!=nil")
// }
}
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
657
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术