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

Go语言--快速入门

Go语言特点

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

package main

import "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, 2
    fmt.Println(b, c)
    var d float64
    //声明了stringVal这个变量
    stringVal:="s"
    var x,y bool=true,true
}
package main

import "fmt"

func main() {
   const LENGTH int = 10
   const WIDTH int = 5   
   var area int
   const a, b, c = 1, false, "str" //多重赋值
   const x string="huihui"

   area = LENGTH * WIDTH
   fmt.Printf("面积为 : %d", area)
   println()
   println(a, b, c)   
}

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

package main

import "fmt"

func main() {
   var a int = 4
   var 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 int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result ,result
}

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

package main

import "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 main

import "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 main

import "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->1
	ch->2
	//遍历ch中的value值
	for value :=ch{
	 fmt.Printf(value)
	}
   // 遍历 pow 切片,i 是索引,v 是值
   for i, v := range pow {
      // 打印 2 的 i 次方等于 v
      fmt.Printf("2**%d = %d\n", i, v)
   }
   //只遍历Key
   for _,v:= range pow{
   fmt.Printf(v)
   }
}

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

相关文章:

  • 第四课 Vue中的v-model数据双向绑定
  • C++ | Leetcode C++题解之第467题环绕字符串中唯一的子字符串
  • PyQt入门指南四 事件处理机制详解
  • 【C语言】值传递和指针传递
  • 【Linux】第一个小程序——进度条实现
  • 遥感影像-语义分割数据集:sar水体数据集详细介绍及训练样本处理流程
  • Minio工具类封装
  • Java 运算符(详细介绍)
  • C++-容器适配器- stack、queue、priority_queue和仿函数
  • 鸿蒙next系统如何进行测试APP安装
  • 人工智能时代,程序员如何保持核心竞争力?
  • 云手机哪款好用?2024年云手机推荐对比指南
  • 【计算机网络】网络相关技术介绍
  • springboot cache
  • Python精选200Tips:186-190
  • Android SystemUI组件(08)睡眠灭屏 锁屏处理流程
  • 基于MATLAB实现2ASK调制解调仿真(结果超详细)
  • 刷题 二叉树
  • 行盒的截断样式 box-decoration-break
  • 计算机网络思维导图
  • 王毅同巴基斯坦副总理兼外长达尔通电话
  • 李在明正式登记参选下届韩国总统
  • 央行最新报告:积极落地5月推出的一揽子金融政策,促进经济供需平衡、物价合理回升
  • 1450亿元!财政部拟发行2025年中央金融机构注资特别国债(二期)
  • 来论|建设性推进缅北和平进程——中国的智慧与担当
  • 读图|展现城市品格,上海城市影像走进南美