🔍 前言
Go是谷歌开源的一门编程语言。高并发、云原生、区块链热议不断,Go逐渐进入了大家的视野,那么Go语言到底到底有什么神奇之处?
Build fast, reliable, and efficient software
大规模构建更快、更可靠、更高效的软件应用。
-
👉 更快
Go语言只有25个关键字,学习起来更快。
Go语言直接编译为二进制可执行文件,无需经过虚拟机解释执行。
-
👉 可靠、高效
Go在语言层面支持协程并发。
活跃的社区的伙伴支持,生态丰富。
❗️ Show me the code
-
1️⃣ Hello World
package main
import "fmt"
func main(){
fmt.Println("Hello World!")
}
输出:
Hello World!
-
2️⃣ 变量。var用于声明变量,也可使用
:=
符号对var进行替代。
package main
import "fmt"
func main() {
var i, j int = 1, 2
k := 3
c, python, java := true, false, "no!"
fmt.Println(i, j, k, c, python, java)
}
输出:
1 2 3 true false no!
-
3️⃣ 函数
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
输出:
55
-
4️⃣ if else。Go 的
if
语句与for
循环类似,表达式外无需小括号( )
,而大括号{ }
则是必须的。
package main
import (
"fmt"
)
func if_type(a int) bool {
//if a>100,then return true,else return false
if a>100{
return true
}else {
return false
}
}
func main() {
fmt.Println("a是否大于100:",if_type(200))
}
输出:
true
-
5️⃣ for。for由初始化语句、条件表达式、后置语句组成。
package main
import (
"fmt"
)
func for_type_1() int{
sum := 1
for ;sum<1000;{
sum += sum
}
return sum
}
func main() {
sum := for_type_1()
fmt.Println("累加for sum<1000{}的sum值为:",sum)
}
输出:
累加for sum<1000{}的sum值为:1024
-
6️⃣ switch
package main
import (
"fmt"
)
func switch_type() string{
var os string
switch os = runtime.GOOS;os {
case "windows":
fmt.Println("go runs on windows.")
case "linux":
fmt.Println("go runs on linux.")
default:
fmt.Println("go runs on ",os)
}
var res = "go runs on "+os
return res
}
func main() {
switch_type()
}
输出:
go runs on windows.
-
7️⃣ 指针
package main
import (
"fmt"
)
func point_type(i,j *int){
var m,n *int
m = i
n = j
*m += 100
*n *= 10
}
func main() {
var l,b = 1,1
point_type(&l,&b)
fmt.Printf("The value of m is %v,the value of n is %v.n",l,b)
}
输出:
The value of m is 101,the value of n is 10.
-
8️⃣ 结构体。结构体是变量的集合。
package main
import "fmt"
type Vertext struct {
X int
Y int
}
func main(){
v := Vertext{1,2}
p := &v
fmt.Printf("v.Y s value is equals p.Y(also can use (*p).Y):%vn",(v.Y==p.Y))
}
输出:
v.Y s value is equals p.Y(also can use (*p).Y):true
-
9️⃣ 数组
package main
import "fmt"
func main(){
primes := [6]int{2,3,5,7,11,13}
fmt.Println(primes)
}
输出:
[2 3 5 7 11 13]
-
🔟 切片。切片是不定长数组。
package main
import "fmt"
func main(){
primes := [6]int{2,3,5,7,11,13}
fmt.Println(primes)
fmt.Println("slice......")
sli := primes[1:4]
fmt.Println(sli)
}
输出:
[2 3 5 7 11 13]
slice......
[3 5 7]
-
1️⃣1️⃣ Range。for的range形式方便遍历数组和切片。
package main
import "fmt"
func main(){
primes := [6]int{2,3,5,7,11,13}
sli := primes[1:4]
for index,value := range sli{
fmt.Printf("range...%d,%dn",index,value)
}
}
输出:
range...0,3
range...1,5
range...2,7
-
1️⃣2️⃣ 方法。Go没有类,但是我们可以为结构体定义方法。
package main
import (
"fmt"
"math"
)
type Vertext3 struct {
X,Y float64
}
func (v Vertext3) Abs() float64{
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func main(){
j := Vertext3{3,4}
fmt.Println(j.Abs())
}
输出:
5
-
1️⃣3️⃣ 接口。接口是方法的集合。
package main
import (
"fmt"
"math"
)
type MyFloat float64
type inter_type interface {
Lt() float64
}
func (z MyFloat)Lt() MyFloat{
z = math.Sqrt2
return z
}
func main(){
e := MyFloat(-math.Sqrt2)
fmt.Println(e.Lt())
}
输出:
1.4142135623730951
↘️ 至此,Go的基本用法我们已经会了。详细学习还需要参照Go官方文档。也可从Golang中文社区获取学习资料。
📓 资料链接
-
Go官网
https://go.dev/
-
Golang中文社区
https://studygolang.com/
-
三本书:《The Way To Go》、《Go Web编程》、《Go并发编程实战》。
✨✨✨欢迎大家在公众号后台留言交流学习!!!✨✨✨
原文始发于微信公众号(fairy with you):还在卷Java?再不学Go就要落伍了!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/29635.html