import"math/big"var a bigint =1r <<65// bigint, large than int64var b bigrat =4/5r // bigrat
c := b -1/3r +3*1/2r // bigratprintln a, b, c
var x *big.Int =1r <<65// (1r << 65) is untyped bigint, and can be assigned to *big.Intvar y *big.Rat =4/5r
println x, y
a :=[x*x for x <-[1,3,5,7,11]]
b :=[x*x for x <-[1,3,5,7,11], x >3]
c :=[i+v for i, v <-[1,3,5,7,11], i%2==1]
d :=[k+","+s for k, s <-{"Hello":"xsw","Hi":"Go+"}]
arr :=[1,2,3,4,5,6]
e :=[[a, b]for a <- arr, a < b for b <- arr, b >2]
x :={x: i for i, x <-[1,3,5,7,11]}
y :={x: i for i, x <-[1,3,5,7,11], i%2==1}
z :={v: k for k, v <-{1:"Hello",3:"Hi",5:"xsw",7:"Go+"}, k >3}println a, b, c, d, arr, e, x, y, z
⑤ 集合
集合数据筛选:
type student struct{
name string
score int}
students :=[student{"Ken",90}, student{"Jason",80}, student{"Lily",85}]
unknownScore, ok :={x.score for x <- students, x.name =="Unknown"}
jasonScore :={x.score for x <- students, x.name =="Jason"}println unknownScore, ok // output: 0 falseprintln jasonScore // output: 80
运行结果:
0false80
检查集合中是否存在数据:
students :=[student{"Ken",90}, student{"Jason",80}, student{"Lily",85}]
hasJason :={for x <- students, x.name =="Jason"}// is any student named Jason?
hasFailed :={for x <- students, x.score <60}// is any student failed?println hasJason, hasFailed
运行结果:
truefalse
⑥ 范围(for)
范围表示:
for i <-:10{println i
}for i :=range:10:2{println i
}for i :=range1:10:3{println i
}forrange:10{println"Range expression"}
运行结果:
012345678902468147
Range expression
Range expression
Range expression
Range expression
Range expression
Range expression
Range expression
Range expression
Range expression
Range expression