go入门(2)

本文介绍了Go语言中的常量定义、变量地址、指针概念、new函数的使用、条件判断(if和switch)、时间处理(包括日期、时间计算和格式化)、数学常数与随机数生成,以及数组和二维数组的基本操作。
摘要由CSDN通过智能技术生成

常量

package main

import "fmt"

func main() {

	//常量在编译期就确定结果 必须赋值 结果不可改变
	//常量使用关键字const
	const a string = "aaa"
	const b = "bbb"
	//定义多个常量
	const (
		c = 6
		d = 7
	)
	fmt.Println(a, b, c, d)

	//第一个常量必须赋值 其他的常量不赋值 等于第一个常量
	const (
		e = 1
		f
		g
	)
	fmt.Println(e, f, g)
	//使用iota常量生成器 进行自增 默认是0
	const (
		q = iota
		w
		r
	)
	fmt.Println(q, w, r)

}

变量地址

package main

import "fmt"

func main() {

	//变量地址
	//变量的本质就是内存中一块数据的标记,把值存储到变量中,就是把值存储到内存中
	//每次对变量重新赋值 就是在修改变量地址中的内容
	//可以通过&变量名 获取变量的地址值
	//重新创建一个非引用类型变量也会重新开辟内存地址
	var a = 1
	fmt.Println(&a)
	a = 2
	fmt.Println(&a)
	fmt.Println(a)

	b := a
	fmt.Println(&b, &a)

}

 

指针类型

package main

import "fmt"

func main() {

	//指针变量指向一个值的内存地址
	//使用&变量 返回值就是一个指针类型
	//使用var 变量名 *类型 声明指针类型变量
	//声明指针不会开辟内存地址只是准备要指向内存某个空间
	//而声明变量会开辟内存地址,准备放内容 所以指针类型变量 都是把一个变量的地址赋值给指针变量
	//使用 *指针能够获取到内存地址的值 所以*指针就是直接使用变量是相同的
	//应用指针可以实现多个地方操作同一个内存地址的值
	var a = 1
	//打印出*int 就是指针类型
	fmt.Printf("%T", &a)
	fmt.Println()
	//也可以自定义指针类型 *类型
	var b *int
	c := 5
	//把c的地址值 赋值给b
	b = &c
	//打印出相同的地址值 0xc00000a120 0xc00000a120
	fmt.Println(b, &c)
	//指针类型赋值
	*b = 666
	//这样*b c2个数据都发生了变化 都是666 指针类型必须加* 才能得到地址值
	fmt.Println(*b, c)

}

 new 函数

package main

import "fmt"

func main() {
	//使用new 创建一个类型的指针
	a := new(int)
	//打印的是内存地址 指针地址 0xc00000a0e8
	fmt.Println(a)
	//使用*变量赋值
	*a = 123
	//打印a的值必须加*
	fmt.Println(*a)

}

if 条件判断

package main

import "fmt"

func main() {
	var age = 18
	//可以不写括号
	if age >= 18 {
		//符合就打印
		fmt.Println("年龄大于18")
	}
	if age < 18 {
		fmt.Println("年龄小于18")
	}

}

switch

package main

import "fmt"

func main() {
	var age = 20
	//如果age里面有条件判断 age 可以在switch 不写
	switch {
	case age > 10:
		fmt.Println("年龄大于10")
	case age < 5:
		fmt.Println("年龄小于5")
	default:
		fmt.Println("默认输出")
	}

	fmt.Println("结束了")

}

break 停止

时间类型

package main

import (
	"fmt"
	"time"
)

func main() {
	//获取当前时间
	t := time.Now()
	fmt.Println(t)

	//自己指定时间 年月日时分秒 纳秒
	y := time.Date(2024, 2, 17, 12, 32, 55, 1, time.Local)
	fmt.Println(y)
	//年
	fmt.Println(y.Year())
	//月 需要进行int转换
	fmt.Println(int(y.Month()))
	//日
	fmt.Println(y.Day())
	//时
	fmt.Println(y.Hour())
	//分
	fmt.Println(y.Minute())
	//秒
	fmt.Println(y.Second())
	//纳秒
	fmt.Println(y.Nanosecond())
	//获取时分秒
	fmt.Println(y.Clock())
	//秒差 距离1970年1月1日秒差
	fmt.Println(t.Unix())
	//纳秒差
	fmt.Println(t.UnixNano())
	//时间转字符串 2006-01-02 15:04:05 是时间转字符串的固定模版 不能改动
	z := t.Format("2006-01-02 15:04:05")
	fmt.Println(z)

	//字符串转时间
	s := "2022-11-22 13:44:55"
	//2006-01-02 15:04:05 是字符串转换时间 时间转换字符串的 固定模版 不能更改
	x, _ := time.Parse("2006-01-02 15:04:05", s)
	fmt.Println(x)
}

数学常数和随机数

package main

import (
	"fmt"
	"math"
	"math/rand"
	"time"
)

func main() {
	//
	var a float64 = 10.2
	//向下取整数 10
	fmt.Println(math.Floor(a))
	//向上取整数 11
	fmt.Println(math.Ceil(a))
	//取绝对值
	fmt.Println(math.Abs(a))
	//返回整数位 和小数位
	fmt.Println(math.Modf(a))
	//取2个数的最大值
	fmt.Println(math.Max(1, 2))
	//取2个数的最小值
	fmt.Println(math.Min(1, 2))
	//取2的3次方
	fmt.Println(math.Pow(2, 3))
	//四舍五入
	fmt.Println(math.Round(a))
	//随机数种子
	rand.Seed(time.Now().UnixNano())
	//10以内的随机数
	fmt.Println(rand.Intn(10))
}

数组

package main

import "fmt"

func main() {
	//定义数组 3是数组的容量
	var a [3]int = [3]int{1, 2, 3}
	//简写数组
	b := [3]int{4, 5, 6}
	//简写数组
	c := [...]int{7, 8, 9, 10}
	fmt.Println(a, b, c)
	//数组的长度 3 3 4
	fmt.Println(len(a), len(b), len(c))
	//对索引位置修改数据
	a[1] = 66
	fmt.Println(a)
	//单独获取数组索引位置的数据
	fmt.Println(a[2])

}

二维数组

package main

import "fmt"

func main() {
	//二维数组的语法 var arr [n][m]
	var a [3][3]int = [3][3]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
	fmt.Println(a)
	//简写二维数组 在不写var的时候 b后面必须加: 才能赋值
	b := [3][3]int{
		{1, 2, 3},
		{4, 5, 6},
		{7, 8, 9},
	}
	fmt.Println(b)
	//取出二维数组中 第一个数组的元素
	a0 := a[0]
	fmt.Println(a0)
	fmt.Println(a0[0], a0[1])

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值