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

中国银行全球门户网站京东企业门户

中国银行全球门户网站,京东企业门户,长春网站制作报价,网络公司经营范围开发属于制造吗全篇文章 7000 字左右#xff0c; 建议阅读时长 1h 以上。 Go语言是一门开源的编程语言#xff0c;目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力#xff0c;以及在现代语言中所见到的高级特性。它是快速的、静态类型编译语言。 第一个GO程序…  全篇文章 7000 字左右 建议阅读时长 1h 以上。   Go语言是一门开源的编程语言目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力以及在现代语言中所见到的高级特性。它是快速的、静态类型编译语言。 第一个GO程序 package main // 程序组织成包 (1)import fmt // 格式化输出数据 (2)// 主函数入口 (3) func main() {fmt.Println(你好世界) // 输出语句 (4) } 逐行解析这个程序 (1) 这里是每个go文件必备的如果当前文件是独立执行必须要使用 package main(2) 引入了一个名为 fmt 的库包。(3) 当go程序执行时首先调用的就是main.main()函数(4) 调用了fmt库中的Println函数在屏幕中打印字符串信息。 构建和运行Go程序 构建需要在命令行中输入 go build 文件名.go 执行后会生成一个同名的可执行文件。命令行中输入 ./文件名 即可运行 如果你没有本地的Go语言环境可以通过浏览器在线方式学习: https://go.dev/play/ 一、数据类型 1.1 变量 Go语言是一种静态类型的编程语言。 可以通过 var 声明一个或多个变量 var str apple 也可以通过 : 语法来进行初始化变量的简写 str : apple 以上两种创建方式应用代码如下 package mainimport fmtfunc main() {var a saycode // 字符串fmt.Println(a)var b, c int 1, 2 // 整型fmt.Println(b, c)var d true // 布尔型fmt.Println(d)var e int // 声明变量类型为 intfmt.Println(e)// 简化方式f : apple // 字符串fmt.Println(f)g : true // 布尔型fmt.Println(g) } 多个var声明可以成组 var (x int,y bool ) 如果涉及到多个变量同类型的情况可以进行平行赋值。 // 多行 name : saycode age : 10// 平行 name, age : saycode, 10 特殊变量 _(下划线) 对于下划线而言任何值赋值给它都会被舍弃。程序将3赋值给b1进行舍弃。 _, b : 1, 3 1.2 常量 常量是可不变的值Go语言支持字符、字符串、布尔值和数字值的常量。 使用 const 关键字声明 错误案例 运行当前程序发现报错cannot assign to name (untyped string constant I Like Go)也就证实了常量进行初始化值后是不可以进行改变的。 package mainimport fmtfunc main() {const name : I Like Goname I Like Javafmt.Println(name) } 正确案例 将π作为常量进行声明接着去计算出圆的面积。 package mainimport fmtconst PI 3.14func main() {// 计算圆的面积const r 2const area PI * r * rfmt.Println(area) } 二、格式化输出 2.1 默认方式 如果不确定要用什么可以直接使用%v (最好使用特定) fmt.Printf(我今年 %v 岁, 20) // 我今年 20 岁 fmt.Printf(我叫 %v, 张三) // 我叫 张三 2.2 字符串 当需要特定插入字符串时可使用 %s fmt.Printf(我叫 %s, 张三) 2.3 十进制整数 当需要特定插入十进制整数时可使用%d fmt.Printf(我今年 %d 岁, 10) // 我今年 10岁 2.4 浮点数 当需要插入浮点数时可使用 %f .数字f (.2f)含义就是保留小数点后两位 fmt.Printf(我今年 %f 岁, 10.22) // 我今年 10.220000岁 fmt.Printf(我今年 %.2f 岁, 10.22) // 我今年 10.22岁 2.5 变量类型 当需要查看当前变量类型时可使用%T package mainimport fmtfunc main() {num : 10fmt.Printf(num类型为 %T, num) } 三、控制结构 3.1 条件判断if if语句是一种用于判断条件的结构他将根据布尔表达式结果就是 (true 或 false)的结果来决定是否执行某段代码。 else 是不满足前一个 if 后去执行的代码块。 如下代码就是判断 x 5(布尔表达式), 如果大于则执行x大于5否则执行 x小于或等于5 if x 5 {fmt.Println(x大于5) } else {fmt.Println(x小于或等于5) } 3.2 if的嵌套 可以通过嵌套的方式去判断多个值 if x 5 {fmt.Println(x大于5) } else if x 5 {fmt.Println(x小于5) } else {fmt.Println(x等于5) } if语句可以有初始化语句初始化语句中创建的变量只在if语句块中使用。 以下代码是通过getLength方法去获取email字符串的长度在去对长度进行判断大小是否小于1。 package mainimport fmtfunc main() {email : nazhanpeng163.com// 语法糖创建if length : getLength(email); length 1 {fmt.Println(邮箱长度小于1)} else {fmt.Println(邮箱没问题)}}func getLength(a string) int {return len(a) } 3.4 goto 可以使用goto去跳转到当前函数的内定标签位置。例如以下示例。 package mainimport fmtfunc myGoto() {i : 1 Position: // 定义跳转目标标签(注意要以冒号结尾)fmt.Println(i)i // i i1if i 10 { // 限制输出10次以内return}goto Position // 跳转到目标标签 }func main() {myGoto() } 3.5 for循环 for循环的写法有三种形式 (1)、for 初始化语句; 条件语句; 后置语句 { } 正常循环 package mainimport fmtfunc main() {sum : 0for i : 0; i 10; i {sum i // 将i的值进行累加}fmt.Println(sum , sum) }(2)、for 条件语句 { } 和while一样 package mainimport fmtfunc main() {sum, i : 0, 0for i 10 {sum ii}fmt.Println(sum , sum)} (3)、for { } 死循环 package mainimport fmtfunc main() {for {fmt.Println(我爱学 Go)} }3.6 break 利用break可以终止当前语句的执行。下面循环打印了0-5。 package mainimport fmtfunc main() {for i : 0; i 10; i {if i 5 {break // 终止当前循环}fmt.Println(i, i)} } 3.7 continue 可以让循环进入下一次迭代也就是跳过当前这一次的循环。下面循环打印了0-9,但是当i5时跳过了。 package mainimport fmtfunc main() {for i : 0; i 10; i {if i 5 {continue}fmt.Println(i, i)} } 3.8 switch 从上到下去执行switch的代码块直到找到匹配项如果switch没有表达式会去匹配true。 package mainimport fmtfunc main() {i : 1switch i { // 检测i的值是否有匹配项case 0: // case 值为匹配项fmt.Println(i0)case 1:fmt.Println(i1)} } 当我进行匹配时想让它向下进行匹配时需要用到 fallthroungh 关键字。下面当i0时会自定向下匹配去执行对应语句。 package mainimport fmtfunc main() {i : 0switch i {case 0:fallthroughcase 1:fmt.Println(寻找到了, i)} }我们也可以去指定当没有任何匹配项时的默认行为使用 default 关键字。下面当i2时会默认去执行默认行为。 package mainimport fmtfunc main() {i : 2switch i {case 0:fallthroughcase 1:fmt.Println(寻找到, i)default: // 如果i不等于0和1则默认执行fmt.Println(默认执行)} } 也可以在一个case中匹配匹配多个值,使用逗号进行分隔。下面将1-5的数字进行分隔。 package mainimport fmtfunc main() {i : 1switch i {case 1, 2, 3, 4, 5: // 逗号相当于 或也就是 1 或 2 或 3 或 4 或 5fmt.Println(i, i)} } 四、数组 数组是一种固定长度、同类型元素的集合。数组的长度在声明时就被确定并且无法改变。 4.1 创建数组 var 数组名 [数组长度]数组类型 var nums [5]int var names [3]string 4.2 数组初始化 可以在声明数组的同时去进行初始化 nums : [5]int{1, 2, 3, 4, 5} names : [3]string{张三, 李四, 王五} 对于数组长度可以使用省略号来进行替换这样编译器会通过初始化值的数量去判断数组的长度。 nums : [...]int{1, 2, 3, 4, 5} 对于访问数组元素可以通过数组下标来进行访问。 数组下标都是以0开始。下面有一个整数数组1到5。它的下标值是这样的。 下面声明一个1到5元素的数组对数组元素进行访问。 package mainimport fmtfunc main() {arr : [5]int{1, 2, 3, 4, 5} // 声明数组fmt.Println(arr[0], arr[0]) // 访问下标0位置的元素fmt.Println(arr[2], arr[2]) // 访问下标2位置的元素 } 4.3 遍历数组的两种方式 (1)、通过for循环进行遍历数组。 package mainimport fmtfunc main() {nums : [...]int{1, 2, 3, 4, 5}for i : 0; i len(nums); i {fmt.Println(nums[i])} } (2)、通过for循环进行遍历数组。  range 是一个迭代器使用时会在循环的内容中返回一个键值对。下面是一个range循环的一个写法 k是键v是值。range后面紧接着遍历数据 for k, v : range slice/array/string/map/channel { } 下面是使用range 去遍历一个nums 的一个数组的例子。 package mainimport fmtfunc main() {nums : [...]int{1, 2, 3, 4, 5}for index, value : range nums {fmt.Printf(索引: %d, 值: %d\n, index, value)} } 4.4 声明多维数组 var 数组名 [数组长度][数组长度]数组类型 var nums [3][4]int // 声明一个 3*4的二维整数型数组 可以在声明多维数组时直接进行初始化。 package mainimport fmtfunc main() {nums : [3][4]int{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12},}fmt.Println(nums) } 初始化后的样子如下。 当我们对部分值进行初始化未被初始化的位置将被赋值为0。 package mainimport fmtfunc main() {nums : [3][4]int{{1, 2},{5, 6, 7},}fmt.Println(nums) } 初始化后的样子如下。 4.5 访问和修改多维数组 可以通过索引访问和修改多维数组的元素。 package mainimport fmtfunc main() {nums : [3][4]int{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12},}fmt.Println(nums)nums[1][2] 10fmt.Println(nums[1][2]) } 对于遍历多维数组可以使用for循环嵌套来进行遍历。下面程序中i代表的是多维数组的行j代表的是多维数组的列也就是多维数组要是用两个下标才可以进行访问。 package mainimport fmtfunc main() {nums : [3][4]int{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12},}for i : 0; i len(nums); i {for j : 0; j len(nums[i]); j {fmt.Printf(nums[%d][%d]%d\n, i, j, nums[i][j])}} } 上面程序中nums数组的下标值如下。 五、slice 动态数组(slice)是对数组的抽象。它可以改变长度和容量并能共享底层数组的数据。 5.1 创建slice var s []int // 声明一个整数类型的 动态数组 从另一个数组中创建动态数组 arr : [5]int{1, 2, 3, 4, 5} s : arr[1:4] // 创建一个包含 arr中从索引1到索引3元素的动态数组s2 : s[1:2] // 创建一个基于s的动态数组 5.2 make函数 可以使用内置 make 函数来创建一个指定长度和容量的slice。下面所说的长度为5容量为10是说会创建可以容纳10个的slice默认插入5个为0的整数。 package mainimport fmtfunc main() {s1 : make([]int, 5) // 长度为5的整数。s2 : make([]int, 5, 10) // 长度为5容量为10的整数。fmt.Println(s1)fmt.Println(s2)} 也可以通过字面量的方式去进行初始化。 s : []int{1, 2, 3, 4, 5} 5.3 len函数与cap函数 假设我们创建了一个slice可以通过len函数和cap函数来获取对应的长度和容量。 package mainimport fmtfunc main() {s : []int{1, 2, 3, 4, 5}fmt.Println(长度: , len(s)) // 5fmt.Println(容量: , cap(s)) // 5 } 5.4 追加元素 通过使用内容函数 append向slice内追加元素并且会返回追加后的slice var 数组名 [数组长度][数组长度]数组类型 package mainimport fmtfunc main() {s : []int{1, 2, 3, 4, 5}s append(s, 4, 5)fmt.Println(s) // [1 2 3 4 5] } 如果被追加的slice 没有足够的容量去存储追加的元素append 会分配一个足够大的slice来存放原有slice和追加的元素。 package mainimport fmtfunc main() {s0 : []int{0, 1}s1 : append(s0, 2) // 追加一个元素2, [0 0 2]s2 : append(s1, 3) // 追加一个元素3, [0 0 2 3] } 5.5 copy函数 copy函数可以从slice中复制元素到新的slice。会返回复制的元素的个数。 package mainimport fmtfunc main() {var a [...]int{0, 1, 2, 3, 4, 5}var s make([]int, 4)l1 : copy(s, a[0:]) // 从slice 0开始复制并存储到s中 [0 1 2 3]fmt.Println(s)fmt.Println(l1, l1)l2 : copy(s, s[2:]) // 从slice 2开始复制并存储到s中 [2 3 2 3]fmt.Println(s)fmt.Println(l2, l2) } 5.6 遍历 slice 可以使用for循环进行遍历 package mainimport fmtfunc main() {s : []int{1, 2, 3, 4, 5}for i : 0; i len(s); i {fmt.Println(s[i)} } 也可以使用for range循环遍历 package mainimport fmtfunc main() {s : []int{1, 2, 3, 4, 5}for index, value : range s {fmt.Printf(索引: %d, 值: %d\n, index, value)} } 六、函数 一个基本的函数需要包含函数名、参数列表、返回值类型和函数体。 例如定义一个函数名为add的函数包含两个参数a、b返回值类型为int类型函数体是ab计算两个整数的和。 func add(a int, b int) int {return a b } 函数可以有0个或多个参数。 4.1 返回结果 一般用于去终止函数并返回结果。在Go中可以返回单个值或多个值。 单个值返回已经在上面返回了。 4.1.1 多个值返回 package mainimport fmtfunc divide(a int, b int) (int, int) {quotient : a / bremainder : a % breturn quotient, remainder }func main() {q, r : divide(4, 3)fmt.Println(q,r) } 4.1.2 命名返回值 命名返回值在函数代码块内为局部变量可以进行使用。 package mainimport fmtfunc rectangleArea(width, height int) (area int) {area width * heightreturn }func main() {area : rectangleArea(5,6)fmt.Println(area, area) } 4.1.3 空返回语句 可以使用空return返回结果 package mainimport fmtfunc swap(a, b int) (x, y int) {x by areturn }func main() {x, y : swap(1,2)fmt.Println(x, y, y, y) } 4.1.4 按照值传递变量 意味着当一个变量传递给一个函数时该函数收到的是该变量的副本。 我们发现x的值还是5就说明函数无法去改变传递变量的值。 package mainimport fmtfunc main() {x : 5increment(x)fmt.Println(x, x)}func increment(x int) {x } 明天继续更新,请关注我
文章转载自:
http://www.morning.sjwqr.cn.gov.cn.sjwqr.cn
http://www.morning.mjmtm.cn.gov.cn.mjmtm.cn
http://www.morning.rqgq.cn.gov.cn.rqgq.cn
http://www.morning.ncfky.cn.gov.cn.ncfky.cn
http://www.morning.lekbiao.com.gov.cn.lekbiao.com
http://www.morning.yfcyh.cn.gov.cn.yfcyh.cn
http://www.morning.hgkbj.cn.gov.cn.hgkbj.cn
http://www.morning.nndbz.cn.gov.cn.nndbz.cn
http://www.morning.stcds.cn.gov.cn.stcds.cn
http://www.morning.rmltt.cn.gov.cn.rmltt.cn
http://www.morning.snmth.cn.gov.cn.snmth.cn
http://www.morning.xsqbx.cn.gov.cn.xsqbx.cn
http://www.morning.xrtsx.cn.gov.cn.xrtsx.cn
http://www.morning.yqtry.cn.gov.cn.yqtry.cn
http://www.morning.ndtmz.cn.gov.cn.ndtmz.cn
http://www.morning.rglzy.cn.gov.cn.rglzy.cn
http://www.morning.pfntr.cn.gov.cn.pfntr.cn
http://www.morning.kggxj.cn.gov.cn.kggxj.cn
http://www.morning.yrbq.cn.gov.cn.yrbq.cn
http://www.morning.nsncq.cn.gov.cn.nsncq.cn
http://www.morning.yrhpg.cn.gov.cn.yrhpg.cn
http://www.morning.rxhsm.cn.gov.cn.rxhsm.cn
http://www.morning.nstml.cn.gov.cn.nstml.cn
http://www.morning.lbgfz.cn.gov.cn.lbgfz.cn
http://www.morning.xwqxz.cn.gov.cn.xwqxz.cn
http://www.morning.nwczt.cn.gov.cn.nwczt.cn
http://www.morning.xqffq.cn.gov.cn.xqffq.cn
http://www.morning.lnyds.cn.gov.cn.lnyds.cn
http://www.morning.ndlww.cn.gov.cn.ndlww.cn
http://www.morning.jfjbl.cn.gov.cn.jfjbl.cn
http://www.morning.nzqqd.cn.gov.cn.nzqqd.cn
http://www.morning.mcndn.cn.gov.cn.mcndn.cn
http://www.morning.rnsjp.cn.gov.cn.rnsjp.cn
http://www.morning.lnbyk.cn.gov.cn.lnbyk.cn
http://www.morning.sfyqs.cn.gov.cn.sfyqs.cn
http://www.morning.nggry.cn.gov.cn.nggry.cn
http://www.morning.jrkzk.cn.gov.cn.jrkzk.cn
http://www.morning.gyjld.cn.gov.cn.gyjld.cn
http://www.morning.grryh.cn.gov.cn.grryh.cn
http://www.morning.spsqr.cn.gov.cn.spsqr.cn
http://www.morning.lizimc.com.gov.cn.lizimc.com
http://www.morning.pwksz.cn.gov.cn.pwksz.cn
http://www.morning.clnmf.cn.gov.cn.clnmf.cn
http://www.morning.ctlbf.cn.gov.cn.ctlbf.cn
http://www.morning.wwdlg.cn.gov.cn.wwdlg.cn
http://www.morning.fgsqz.cn.gov.cn.fgsqz.cn
http://www.morning.muniubangcaishui.cn.gov.cn.muniubangcaishui.cn
http://www.morning.ztnmc.cn.gov.cn.ztnmc.cn
http://www.morning.pwmpn.cn.gov.cn.pwmpn.cn
http://www.morning.znqfc.cn.gov.cn.znqfc.cn
http://www.morning.kpgft.cn.gov.cn.kpgft.cn
http://www.morning.syxmx.cn.gov.cn.syxmx.cn
http://www.morning.yqpck.cn.gov.cn.yqpck.cn
http://www.morning.bpmdx.cn.gov.cn.bpmdx.cn
http://www.morning.tnjff.cn.gov.cn.tnjff.cn
http://www.morning.nlryq.cn.gov.cn.nlryq.cn
http://www.morning.dmtwz.cn.gov.cn.dmtwz.cn
http://www.morning.rtkz.cn.gov.cn.rtkz.cn
http://www.morning.rqxtb.cn.gov.cn.rqxtb.cn
http://www.morning.qtryb.cn.gov.cn.qtryb.cn
http://www.morning.hxlpm.cn.gov.cn.hxlpm.cn
http://www.morning.ttaes.cn.gov.cn.ttaes.cn
http://www.morning.ldynr.cn.gov.cn.ldynr.cn
http://www.morning.flfxb.cn.gov.cn.flfxb.cn
http://www.morning.kczkq.cn.gov.cn.kczkq.cn
http://www.morning.ygxf.cn.gov.cn.ygxf.cn
http://www.morning.tlyms.cn.gov.cn.tlyms.cn
http://www.morning.rkwwy.cn.gov.cn.rkwwy.cn
http://www.morning.bhmnp.cn.gov.cn.bhmnp.cn
http://www.morning.tkfnp.cn.gov.cn.tkfnp.cn
http://www.morning.ybyln.cn.gov.cn.ybyln.cn
http://www.morning.dwrjj.cn.gov.cn.dwrjj.cn
http://www.morning.pngph.cn.gov.cn.pngph.cn
http://www.morning.yrgb.cn.gov.cn.yrgb.cn
http://www.morning.mqghs.cn.gov.cn.mqghs.cn
http://www.morning.xylxm.cn.gov.cn.xylxm.cn
http://www.morning.wqpr.cn.gov.cn.wqpr.cn
http://www.morning.ksjnl.cn.gov.cn.ksjnl.cn
http://www.morning.yfddl.cn.gov.cn.yfddl.cn
http://www.morning.rcwzf.cn.gov.cn.rcwzf.cn
http://www.tj-hxxt.cn/news/240710.html

相关文章:

  • 建设电商网站的技术可行性南宁定制网站制作网络公司
  • 源码 网站建设教程中国做网站的网站
  • 山西做网站如何选择专业网站制作公司咨询
  • 做网站公司什么条件网站开发的选择是什么
  • 厦门小型网站建设电商商城开发
  • 吉安网站建设优化服务哪些网站推广公司
  • 普法网站建设长沙网站建设公司招聘
  • 山东网站建设是什么优秀手机网站模板图片
  • 网站后台字体安装网站建设贵阳
  • 高校网站建设的重要性软件定制合同模板
  • 抚州网站建设公司广东深圳市宝安区
  • 遵义做网站哪个公司最好沈阳企业网站开发
  • 购买网站模板怎么用外贸网店平台
  • 如何进入网站后台地址wordpress 多说 社交登陆
  • 品牌形象网站源码seo教程技术资源
  • 珠海市官网网站建设品牌响应式网站手机
  • 网站的ftp怎么登陆国内网站没备案
  • 做网站和做app有什么不同商业计划书免费word版
  • .net域名可以做银行网站吗wordpress图片变大
  • 公司做网站自己可以做互联网网站建设方案
  • 网站标题的重要性剑三做月饼活动网站
  • 成都学校网站建东莞做网站 自媒体
  • php建站系统哪个好做策划 都上什么网站
  • 做好网站买了空间域名最世网络建设网站可以吗
  • 网站服务器如何做热备价本站由 今科云平台网站建设技术开发
  • 网站配置域名万网域名解析地址
  • 网站未备案 打不开米拓网站建设
  • 网站建设方案的含义做网站的流程
  • 网站后台账号密码获取美食网页制作
  • 典型网站开发的一般流程网站网站模版