当前位置: 首页 > news >正文

Go语言--快速入门

Go语言特点

我们先看一下简单的Go语言程序

package mainimport "fmt"func main()  
{  // 错误,{ 不能在单独的行上fmt.Println("Hello, World!")
}

我们可以看到外型非常像我们的JAVA,但是不需要;作为结尾,也就是我们使用行分隔符。
之后的特点就是声明变量的方式,我们使用了关键字var,

package main
import "fmt"
func main() {var a string = "Runoob"fmt.Println(a)var b, c int = 1, 2fmt.Println(b, c)var d float64//声明了stringVal这个变量stringVal:="s"var x,y bool=true,true
}
package mainimport "fmt"func main() {const LENGTH int = 10const WIDTH int = 5   var area intconst a, b, c = 1, false, "str" //多重赋值const x string="huihui"area = LENGTH * WIDTHfmt.Printf("面积为 : %d", area)println()println(a, b, c)   
}

我们的语言常量的关键字是const,用法和var一样。

package mainimport "fmt"func main() {var a int = 4var ptr *int=nil/*  & 和 * 运算符实例 */ptr = &a     /* 'ptr' 包含了 'a' 变量的地址 */fmt.Printf("a 的值为  %d\n", a);fmt.Printf("*ptr 为 %d\n", *ptr);
}

这里指针的用法和我们的C语言一致,不同是指针的空值用nil表示。

/* 函数返回两个数的最大值 */
func max(num1, num2 int) (int,int) {/* 声明局部变量 */var result intif (num1 > num2) {result = num1} else {result = num2}return result ,result
}

我们的函数定义关键字是func,但是不同的是我们的函数返回值类型是放在后面的。同时GO语言还可以同时返回多个参数。

package mainimport "fmt"func main() {var n [10]int /* n 是一个长度为 10 的数组 ,定义数组*//* 定义不定长数组*/balance :=[...]float32{1.2,32.3,23.4}/* 输出每个数组元素的值 ,可以用索引来读取*/for j = 0; j < 10; j++ {fmt.Printf("Element[%d] = %d\n", j, n[j] )}
}

GO语言定义数组的方式是将[]type放在我们的标识符后面,如果是不定长的数组,我们使用[…]来定义。

package mainimport "fmt"func main() {var a int= 20   /* 声明实际变量 */var ip *int        /* 声明指针变量 */ip = &a  /* 指针变量的存储地址 */var b *int=nil fmt.Printf("a 变量的地址是: %x\n", &a  )/* 指针变量的存储地址 */fmt.Printf("ip 变量储存的指针地址: %x\n", ip )/* 使用指针访问值 */fmt.Printf("*ip 变量的值: %d\n", *ip )
}

和C语言一样我们使用*来声明指针变量,用&获得变量的地址。

package mainimport "fmt"func main() {var numbers = make([]int,3,5)var numbers1 []string={"333","ddfff","ddffccc"}printSlice(numbers)
}func printSlice(x []int){fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

GO语言切片就是没有固定长度的可变数组,所以定义时就是不加数字,还可以使用make来进行定义。

package main
import "fmt"
// 声明一个包含 2 的幂次方的切片
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
//定义cahnnel,元素有两个整型
ch:=make(chan int,2)func main() {
//接受两个整型元素ch->1ch->2//遍历ch中的value值for value :=ch{fmt.Printf(value)}// 遍历 pow 切片,i 是索引,v 是值for i, v := range pow {// 打印 2 的 i 次方等于 vfmt.Printf("2**%d = %d\n", i, v)}//只遍历Keyfor _,v:= range pow{fmt.Printf(v)}
}

Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。

http://www.lryc.cn/news/457030.html

相关文章:

  • 京东云主机怎么用?使用京东云服务器建网站(图文教程)
  • Linux 基础入门操作-实验七 进程的介绍
  • SQL进阶技巧:SQL中的正则表达式应用?
  • 算法数组面试理论
  • ASP.NET Zero是什么?适合哪些业务场景?
  • 获取期货股票分钟级别数据以及均线策略
  • 入门篇-1 数据结构简介
  • Anaconda安装
  • Elasticsearch学习笔记(六)使用集群令牌将新加点加入集群
  • 项目建设方案,软件技术方案,整体技术方案,软件建设文档编制(word原件)
  • vue3定义组件
  • BOM常见操作方法汇总
  • Python+whisper/vosk实现语音识别
  • 如何在算家云搭建LivePortrait(视频生成)
  • CSS 命名规范及 BEM 在前端开发中的实践
  • SwiftUI 6.0(iOS 18)新增的网格渐变色 MeshGradient 解惑
  • 【计算机网络】详谈TCP协议确认应答机制捎带应答机制超市重传机制连接管理机制流量管理机制滑动窗口拥塞控制延迟应答
  • rk3566开发之rknn npu 部署
  • 项目生产经理需要具备哪些技能和素质
  • Java数据类型常量
  • 如何提高浮点类型计算的精度
  • RabbitMQ简介及安装类
  • 游戏服务器防御策略:防止玩家因DDoS攻击而掉线
  • Django学习笔记二:数据库操作详解
  • Spring Boot 应用开发案例:在线书籍管理系统
  • 阿里140滑块-滑块验证码逆向分析思路学习
  • 使用 Linux 搭建并配置一个 NFS 服务器
  • python发包
  • 农行1面:说说 final,finally,finalize的区别
  • ChatGPT实时语音将于本周向免费用户推出:OpenAI DevDay 2024详细解读