Go语言学习笔记一、基础知识

本文详细介绍Go语言的基础概念,包括变量声明、常量使用、数据类型介绍、字符串操作、错误处理等核心内容。此外还介绍了数组、切片、映射(map)的使用方法,以及make与new的区别。
package main

import (
	"errors"
	"fmt"
)

func main() {

	//变量的申明方式:
	//1.var vname type
	var a string
	a = "hello world !"
	fmt.Println(a)
	//2.多个变量三种:var vname1 , vname2 , vname3 type = v1 , v2 , v3,也可采用分组变量

	var x, y, z int = 1, 2, 3
	fmt.Println(x + y + z)

	//vname1 , vname2 , vname3 type := v1 , v2 , v3
	i, j, k := 'a', 'b', 'c'
	fmt.Println(string(i) + string(j) + string(k))

	//分组变量
	// var (
	// 	ii     int
	// 	pii    float32
	// 	prefix string
	// )

	//3.丢弃值: _ , b : = -1 , 12
	_, b := -1, 12
	fmt.Println(b)

	//4. 常量的申明 const Pi = 3.1415,常量是不需要使用“:”推断类型的,但你可以显示的申明常亮类型:const Pi float32 = 3.1415
	const Pi = 3.1415
	fmt.Println(Pi)

	//数值类型
	//rune是int32的别称,byte 是uint8的别称
	var aa rune = 32
	var bb int32 = 32
	if aa == bb {
		fmt.Println("rune是int32的别名")
	}

	var xx byte = 2
	var yy uint8 = 2
	if xx == yy {
		fmt.Println("byte是uint8的别名")
	}

	//Go中字符串是不可变的,s[0] = 'c' //编译报错,字符穿不能修,但可进行切片操作
	var s string = "hello"
	fmt.Println(s)

	s = "c" + s[1:]
	fmt.Println(s)

	//字符串的换行使用'`'符号连接
	str := `Hello 
	World`
	fmt.Println(str)

	//Go中内置了error来接受错误类型,package中errors来跑出错误
	var err error = errors.New("make a  error")
	if err != nil {
		fmt.Println(err)
	}

	//iota枚举关键字用法,常量复制iota那么,后边的常量即使不申明复制iota,也默认等于iota,且每次+1.但再次遇到const时,iota重置为0

	// const(

	// 	d = iota
	// 	e = iota
	// 	f = iota
	// 	g = iota
	// 	h
	// )
	// fmt.Println(d)
	// fmt.Println(e)
	// fmt.Println(f)
	// fmt.Println(g)
	// fmt.Println(h)

	//数组的初始化
	var arr [3]int
	arr[0] = 10

	arrs := [3]int{1, 2, 3}
	fmt.Println(arrs[0])
	fmt.Println(arrs[1])
	fmt.Println(arrs[2])

	//自动推断长度的数组

	arrss := [...]int{4, 5, 6}
	fmt.Println(arrss[0])
	fmt.Println(arrss[1])
	fmt.Println(arrss[2])

	//slice是数组的切片,slice和数组的区别是,slice的申明没有长度也不适用...来自动推断长度
	slice := []byte{'a', 'b', 'c'}
	fmt.Println(slice)
	fmt.Println(slice[0])
	fmt.Println(slice[1])
	fmt.Println(slice[2])

	//slice可从数组中得到
	slice2 := arrs[1:]
	fmt.Println(slice2[0])
	fmt.Println(slice2[1])

	//[:]完整获取数组的值
	slice3 := arrss[:]
	for i := 0; i < len(slice3); i++ {
		fmt.Println(slice3[i])
	}

	fmt.Println(cap(slice3))

	//从arrary中获取数组到slice中
	slice3 = append(slice3, arrs[1:3]...)
	fmt.Println("***")
	for i := 0; i < len(slice3); i++ {
		fmt.Println(slice3[i])
	}
	fmt.Println("***")

	//map的用法map[keyType]valueType
	user := make(map[int]string)
	user[1001] = "yyq"
	user[1002] = "yyq1"
	user[1003] = "yyq2"
	fmt.Println(user[1001])

	//map的另一种初始化方式
	user2 := map[int]string{1001: "yyq", 1002: "yyq2", 1003: "yyq3"}
	fmt.Println(user2[1003])

	delete(user, 1001)
	fmt.Println(user[1001])

	//make用于分配map,slice,channel的内存,并初始化为“非零”值,new用于各类内存的分配,并初始化成“零”值
	

}


内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值