Go 语言入门指南

这篇具有很好参考价值的文章主要介绍了Go 语言入门指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Go 语言入门指南

学一门语言先看看helloworld吧,感觉go结合了好多语言的方式,写起来一会像python一会像c++,java差不多。反正语法挺奇特

package main

import "fmt"

func main() {
	fmt.Println("HelloWorld")
}
go语言特点:

高性能、高并发

语法简单,学习曲线平缓

丰富的标准库

完善的工具链

静态链接

快速编译

跨平台

垃圾回收

首先听到老师说 go语言编译贼快,1秒钟左右,我(c++选手)听到简直大吃一惊啊,真神奇

基础语法

首先go是强类型语言,每一个变量都有自己的变量类型,常见的有:字符串,整数,浮点型,布尔类型,另外go中也有指针(只不过用法就是解引用和取地址)

go语言中字符串是内置类型,可通过加号直接拼接,也同时能用等于号比较俩个字符串

下面是变量声明及其定义

var name string // 声明
var name string = "name" //声明并赋初值
var name = "name" //自动推导类型为string

name := "name" //也可以省略var 和类型直接自动推导
/*其他类型同上几乎差不多*/
分支结构
if - else :

go 中的if - else和其他语言差不多,有些细节需要注意

if true{ // 花括号必须加
	...
}else{ //else必须位于这里
    
}
// if - else if 
if true{
	...
}else if true{
	...
}else{
	...	
}
switch-case

switch 中 可以放 变量,常量 ,字符串, case中也可以放表达式,用起来很是方便

switch v{
	case 1 , 2 : // 可以并列 , 然后没有break
	case 3:
	default:
} 
switch {
	case  retInt() == v: //表达式
		...
	case  v == 2:
		...
	default:
		...
	} 
循环结构

go 语言中只有一个for

for{	//类似 while(true)死循环
	...
}
for i < 10{ //类似while(i < 10)
	...
}
for i:=0; i < 10; i++{ //正常for循环,三个表达式也可以省略,但是分号得在昂
	...
}
数组

数组的话和其他语言类似,具有编号且长度确定的元素序列

var a[5] int //声明一个长度为5的int型数组
b := [5]int{1,2,3,4,5} //声明并定义
c := [...]int{1,2,3,4,5}//不想写括号里的5也可以写...来根据后面初始化的数量赋值
var twoD [2][3]int//二维数组
切片

go语言中一般很少用数组,用切片更方便一些

切片可以任意更改长度

	s := make([]string, 3) //创建一个切片 初始长度为3
	s[0] = "a"
	s[1] = "b"
	s[2] = "c"
	s = append(s, "d") //数组不能用这个方法
	fmt.Println(s) // [a b 3 d] 

切片也可以这样声明,一开始总搞混切片和数组,其实就是切片方括号没值而已,数组有值

	var s  []string //切片也可以这样声明
	s = append(s, "a")
	s = append(s, "b")
	fmt.Println(s) // [a b]

现在解释一一下为什么s = append(s, “a”)还需要在重新给s赋值呢,虽然切片可以动态变长,其实切片底层是维护了一个数组的,也就是说他初始上就是个数组,只不过有一定大小,如果你append添加元素没有超过数组,那没事,但是超过数组大小,他就会重新弄一个更大的数组然后把值拷贝进去,最后把地址返回出来,所以你得让他重新等于s。(对于c++同学应该是类似与vector的东东)

对切片可以有cap方法查看其底层数组大小 , len方法是真实元素个数
	var s []string
	s = append(s, "a")
	s = append(s, "b")
	s = append(s, "c")
	fmt.Println(s)
	fmt.Println(cap(s)) // 4 
	fmt.Println(len(s)) // 3
切片遍历时也可以像python的切片一样
	s[0:len(s)]  // 这样使用
	// 数组也可以 只不过数组一这样用返回的类型也就是切片类型了
map

这个map和其他语言的hashmap、字典差不多

	m := make(map[string]int , 3)//key是string value是int  初始大小设置为3								 	//也可以不设置
	m["name"] = 2
	fmt.Println(m["name"])
	delete(m , "name")//在m中删除key为name的
range

下面来介绍range。对于一个 slice(切片) 或者一个 map 的话,我们可以用 range 来快速遍历,这样代码能够更加简洁。 range 遍历的时候,对于数组会返回两个值,第一个是索引,第二个是对应位置的值。如果我们不需要索引的话,我们可以用下划线来忽略。

	nums := []int{2, 3, 4}
	sum := 0
	for i, num := range nums { //返回数组的 下标 和值
		sum += num
		if num == 2 {
			fmt.Println("index:", i, "num:", num) // index: 0 num: 2
		}	
	}
	fmt.Println(sum) // 9
	m := map[string]string{"a": "A", "b": "B"}
	for k, v := range m {  //返回key和value
		fmt.Println(k, v) // a A; b B
	}
	for k := range m {//返回key
		fmt.Println("key", k) // key a; key b
	}
函数

这个是 Golang 里面一个简单的实现两个变量相加的函数。 Golang 和其他很多语言不一样的是,变量类型是后置的。Golang 里面的函数原生支持返回多个值。在实际的业务逻辑代码里面几乎所有的函数都返回两个值,第一个是真正的返回结果,第二个值是一个错误信息。

func add(a  int , b int) int ,err {//a int , b int == a , b int俩种方式都一样
	return a + b		//后面的是返回值
}
func add(a , b int)(int , error){ //可返回多个值
	return a + b , nil
}

func Tmp(a , b int){
	func() int {//还可以在函数内部定义一个匿名函数,类似别的语言lambda函数
		return 5
	}()//加上()表示直接调用
}

结构体
type student struct { //定义方式 type + 名字 + struct
	name string //小写变量名相当于私有,只有自己包的才可以访问,
	Age  int //大写变量名相当于公有 , 外面包也可以访问
}
	stus := []student{ 
		{name: "小王子", Age: 18}, //可以指定变量成员赋值
		{name: "大王八", Age: 9000},
		{name: "娜扎", Age: 23},
	}
结构体函数

相比其他语言,结构体成员函数是在外面定义的

type person struct {
	name, city string
	age        int8
}
//	(接收者变量 接收者类型) 方法名(参数列表) (返回参数)
//	不可修改成员的值
// 方法与函数的区别是,函数不属于任何类型,方法属于特定的类型。
func (p person) Dream() { 
	fmt.Printf("%s的梦想是学好Go语言!\n", p.name)
}
// 可修改成员的值
func (p *person) SetAge(newAge int8) {
	p.age = newAge
}

简单语法结构就介绍这么多了,剩下的太多了慢慢介绍文章来源地址https://www.toymoban.com/news/detail-605409.html

到了这里,关于Go 语言入门指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go语言入门指南:基础语法和常用特性解析(上)

    Go是一种静态类型的编译语言,常常被称作是21世纪的C语言。Go语言是一个开源项目,可以免费获取编译器、库、配套工具的源代码,也是高性能服务器和应用程序的热门选择。 Go语言可以运行在类UNIX系统——比如Linux、OpenBSD、Microsoft Windows等操作系统上。 因为Go语言的特性,

    2024年02月12日
    浏览(44)
  • Go 语言入门指南: 环境搭建、基础语法和常用特性解析 | 青训营

    Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且

    2024年02月14日
    浏览(37)
  • 【GoLang入门教程】Go语言工程结构详述

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能 前言 当创建一个Go语言项目时,良好的工程结构是确保项目可维护性、可扩展性和清晰性的关键。 虽然Go本身没有强制性的项目结构要求,但是采用一致性

    2024年01月24日
    浏览(80)
  • 【Go语言】Golang保姆级入门教程 Go初学者chapter2

    setting的首选项 一个程序就是一个世界 变量是程序的基本组成单位 变量的使用步骤 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zuxG8imp-1691479164956)(https://cdn.staticaly.com/gh/hudiework/img@main/image-20230726152905139.png)] 变量表示内存中的一个存储区 注意:

    2024年02月14日
    浏览(129)
  • 【Go语言】Golang保姆级入门教程 Go初学者chapter3

    下划线“_”本身在Go中一个特殊的标识符,成为空标识符。可以代表任何其他的标识符,但是他对应的值就会被忽略 仅仅被作为站维度使用, 不能作为标识符使用 因为Go语言中没有private public 所以标记变量首字母大写代表其他包可以使用 小写就是不可使用的 注意:Go语言中

    2024年02月13日
    浏览(62)
  • 【Go语言】Golang保姆级入门教程 Go初学者介绍chapter1

    Golang的学习方向 区块链研发工程师: 去中心化 虚拟货币 金融 Go服务器端、游戏软件工程师 : C C++ 处理日志 数据打包 文件系统 数据处理 很厉害 处理大并发 Golang分布式、云计算软件工程师:盛大云 cdn 京东 消息推送 分布式文件系统 2、Golang的应用领域 区块链应用:区块链

    2024年02月15日
    浏览(70)
  • 【Golang入门教程】Go语言变量的初始化

    强烈推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站: 人工智能 推荐一个个人工作,日常中比较常用的人工智能工具,无需魔法,忍不住分享一下给大家。点击跳转到网站: 人工智能工具 引言 在Go语言中,变量

    2024年04月17日
    浏览(79)
  • 【GoLang入门教程】Go语言几种标准库介绍(六)

    前言 上一篇,我们介绍了image、IO、math三个库,这篇我们继续介绍剩下的库 几种库 Net库 (网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等) 在 Go 语言的标准库中, net 包提供了对网络操作的支持,包括基本的网络协议、Socket 编程、HTTP 客户端和服务器等。 net 包包含多个子包,其

    2024年02月02日
    浏览(62)
  • 【GoLang入门教程】Go语言几种标准库介绍(四)

    前言 上一篇,我们介绍了debug、encoding、flag三个库,这篇我们继续介绍剩下的库 几种库 fmt库 (格式化操作) 在 Go 语言的标准库中, fmt 包提供了格式化输入输出的功能。 这个包包括了一系列函数,用于将数据格式化为字符串( fmt.Sprintf )、输出到控制台( fmt.Print 、 fmt.Pri

    2024年02月03日
    浏览(106)
  • 【GoLang入门教程】Go语言几种标准库介绍(八)

    强烈推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能 前言 上一篇,我们介绍了plugin、reflect、regexp三个库,这篇我们继续介绍剩下的库 几种库 runtime库 ( 运行时接口) 在 Go 语言的标准库中, runtime 包

    2024年01月19日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包