(一)初识Go

Go语言基础篇 (一)初识Golang 文章目录发展历程语言特点适用人群我为什么学习Golang注意事项系列文章分类参考链接 发展历程 Go语言是在2007年由Robert Griesemer、Ken Thompson、Rob Pike三位大牛在Google合作开发的一门编程语言。 作为惯例,先来看看这三位大牛的发量如何[doge]。 其实,仔细一看还是挺多的… 言归正传,到2009年的时候,Go语言的第一个正式版本以开源的形式发布。直到现在,经过10多年的发展,Go的最新版本1.18.2已经发布。并且,生态也越来越成熟,使用Go语言进行业务开 阅读详情
为什么会有Go语言

粗浅的认识是因为Go比java更轻且性能上靠近python,容易上手,并发性好。

Go 的基本语法区别
  1. 强制代码风格,“{”不可以单独成为一行,句末没有分号
  2. 变量: 不声明类型时,变量类型由右值决定:
   i := 1.0   // i是float64类型,且只能在函数中使用这种赋值

声明类型(注意类型在变量名之后):

	var i float64 = 1.0
  1. 函数:同种类型变量最右声明,可以返回多个值
    func p1(x,y,z int) int float { 
    }
  1. 常量:const关键字
  2. 循环:只有for一种写法,没有"( )", 必须有 " { }"
package main  //go从main包开始运行
import (      // 导入包
	"fmt"
)
	for i := 1 ; i < 10; i++{
		fmt.Println("i : ", i)
}

//无限循环写法
	for {
	}
  1. 分支: if 条件表达式中声明的变量,作用域在if和else块中,

func pow(x, n, lim float64) float64 {
	if v := math.Pow(x, n); v < lim {
		return v
	} else {
		fmt.Printf("%g >= %g\n", v, lim)
	}
	// 这里开始就不能使用 v 了
	return lim
}

简单编程练习:循环与函数

为了练习函数与循环,我们来实现一个平方根函数:用牛顿法实现平方根函数。

计算机通常使用循环来计算 x 的平方根。从某个猜测的值 z 开始,我们可以根据 z² 与 x 的近似度来调整 z,产生一个更好的猜测:

z−=(z∗z−x)/(2∗z)z -= (z*z - x) / (2*z)z−=(z∗z−x)/(2∗z)
重复调整的过程,猜测的结果会越来越精确,得到的答案也会尽可能接近实际的平方根。

在提供的 func Sqrt 中实现它。无论输入是什么,对 z 的一个恰当的猜测为 1。 要开始,请重复计算 10 次并随之打印每次的 z 值。观察对于不同的值 x(1、2、3 …), 你得到的答案是如何逼近结果的,猜测提升的速度有多快。

提示:用类型转换或浮点数语法来声明并初始化一个浮点数值:

z:=1.0z := 1.0z:=1.0
z:=float64(1)z := float64(1)z:=float64(1)
然后,修改循环条件,使得当值停止改变(或改变非常小)的时候退出循环。观察迭代次数大于还是小于 10。 尝试改变 z 的初始猜测,如 x 或 x/2。你的函数结果与标准库中的 math.Sqrt 接近吗?

(注: 如果你对该算法的细节感兴趣,上面的 z² − x 是 z² 到它所要到达的值(即 x)的距离, 除以的 2z 为 z² 的导数,我们通过 z² 的变化速度来改变 z 的调整量。 这种通用方法叫做牛顿法。 它对很多函数,特别是平方根而言非常有效。)

我的代码:

package main

import (
	"fmt"
	"math"
)

func Sqrt(x float64) float64 {
	var z float64 = 1
	tmp := 1.0
	tmp = ( z * z - x ) / ( 2 * z )	
	cnt := 1
	for math.Abs(tmp) > 0.0000000000001{
		z -= tmp
		tmp = ( z * z - x ) / ( 2 * z )
		cnt++
	}
	fmt.Println("Times:  ;",cnt)
	return z
}

func main() {
	for i := 1 ;i < 11;i++ {
		fmt.Println(Sqrt(float64(i)))
		fmt.Println("math : ",math.Sqrt(float64(i)))
	}
}

运行结果:

Times: 1
1
math :  1
Times: 6
1.4142135623730951
math :  1.4142135623730951
Times: 6
1.7320508075688772
math :  1.7320508075688772
Times: 6
2.000000000000002
math :  2
Times: 7
2.23606797749979
math :  2.23606797749979
Times: 7
2.449489742783178
math :  2.449489742783178
Times: 7
2.6457513110645907
math :  2.6457513110645907
Times: 7
2.8284271247461903
math :  2.8284271247461903
Times: 7
3
math :  3
Times: 7
3.1622776601683795
math :  3.1622776601683795

MounRiver Studio实战:像管理个人项目一样整理沁恒MCU的EVT例程(附文件结构图) 本文详细介绍了如何使用MounRiver Studio重构沁恒MCU的EVT例程,实现工程化管理。通过分析官方EVT设计的局限性,提出标准化的目录结构和迁移步骤,帮助开发者提升代码可维护性和团队协作效率。文章还提供了MounRiver Studio的关键配置参数和常见问题排查指南,适用于沁恒MCU开发者。 阅读详情

相关推荐

利用Cesium引擎实现大疆智图B3DM三维模型的高效加载与可视化

本文详细介绍了如何利用Cesium引擎高效加载与可视化大疆智图B3DM三维模型。通过性能优化实战和典型应用场景分析,帮助开发者掌握模型预处理、渲染参数调优及高级功能实现技巧,提升大规模倾斜摄影数据的网页端展示效率。

weixin_29231725的博客 218

【A tour of go】练习题

练习:循环与函数 (1)题目 为了练习函数与循环,我们来实现一个平方根函数:用牛顿法实现平方根函数。 计算机通常使用循环来计算 x 的平方根。从某个猜测的值 z 开始,我们可以根据 z² 与 x 的近似度来调整 z,产生一个更好的猜测: z -= (z*z - x) / (2*z) 重复调整的过程,猜测的结果会越来越精确,得到的答案也会尽可能接近实际的平方根。 在提供的func Sq...

weixin_30700977的博客 453

STM32F411CEU6实战:用W25Q64存储多张图片,在240x240 LCD上轮播显示(附源码)

本文详细介绍了如何使用STM32F411CEU6通过SPI接口管理W25Q64 Flash中的多张图片,并在240x240 LCD上实现平滑轮播显示。内容涵盖硬件配置、图片存储方案设计、轮播系统实现及性能优化技巧,特别针对SPI传输优化和多图存储管理提供了实用解决方案。附源码,适合嵌入式开发者参考。

weixin_32025789的博客 308

【Go】A tour of go 练习题答案

A tour of go 练习题答案 1、 练习:循环与函数 (1)题目 ​ 为了练习函数与循环,我们来实现一个平方根函数:用牛顿法实现平方根函数。 ​ 计算机通常使用循环来计算 x 的平方根。从某个猜测的值 z 开始,我们可以根据 z² 与 x 的近似度来调整 z,产生一个更好的猜测: z -= (z*z - x) / (2*z) ​ 重复调整的过程,猜测的结果会...

问题不大 7587

ENU坐标系实战:5分钟搞定无人机导航中的站心坐标转换

本文针对无人机导航中GPS坐标与视觉感知不匹配的定位漂移问题,提供了基于ENU坐标系的实战解决方案。通过Python代码演示了如何快速、精准地实现地心地固坐标与站心坐标之间的转换,并详细解释了转换原理、精度对比及工程优化技巧,帮助开发者从根本上解决局部相对定位不准的难题。

mqtt6iot的博客 552

【ENVI初学】查看影像空间分辨率及重采样

例如,如果线段长度为900米,对应的像素数量为30个,那么影像的空间分辨率为30米。通过计算长度与像素数量的比值,即可得到影像的空间分辨率。,在弹出的对话框中,输入重采样后输出文件的xy分辨率大小。在测量结果窗口中,可以看到该线段的长度以及角度。在影像上点击并拖动鼠标,绘制一条直线段。工具,选择要重采样的影像后点击ok。,避免了插值过程中光谱信息的改变。:最近邻插值法通过选择原始影像中。在ENVI中打开影像后右键选择。指示了每个像素的地理跨度(聚合为一个新像素,通常通过。方法一:查看影像的元数据。

weixin_41619112的博客 5570

Go语言之旅 学习笔记(一)——基础

Go语言之旅 学习笔记基础包、变量和函数包导入导出名函数变量基本类型常量流程控制语句forif练习:循环与函数switchdefer指针结构体数组slice切片map映射函数方法和接口

二八开的博客 763

excel 利用SUBTOTAL函数计算筛选后数列总和、均值、最大、最小值

表里有三个人,咱们需要筛选出三个人,并分别计算他们的总和值。 先看一下数据范围(A1:B27) 通过筛选找张三。 按照上图所示输入函数,选择9,求和。 然后按照函数输入即可。 就能计算出结果。 筛选项选择王五,就会自动计算王五的总和。 筛选到李四就会自动计算李四的总和。 如果把9改成1,就是自动计算筛选出来的均值结果,如下图所示。 如果改成4就是取筛选项的最大值,选择5就是取最小值。 ...

yuanYW7556的博客 3万+

从零到一学习golang语言_初识go语言(一)

从本篇文章起,从零到一学习go语言。 一、go和golang? 到底是go语言还是golang语言,其实官网已经表态过为go语言。官网的域名使用https://golang.org/,是因为go.org已经被注册过了,需要花几千万购买,但是没这个必要。第二个原因使用golang是因为,在搜索引擎中查找相关go的资料时使用golang能能更大限度匹配,如果仅仅是输入go很可能得不到你想要的。 二、go语言简介 go语言是一个开源的项目,为了让程序开发者更高产,提高程序员的开发生产力。 go语言富有表

Sun_ltyy的博客 1354

开源大模型本地部署实战:Llama、DeepSeek、Qwen选型与工程落地指南

大语言模型(LLM)本地部署已成为AI工程化核心环节,其本质不是比拼参数量或榜单分数,而是考察模型架构、推理引擎、量化支持、IDE集成与多模态扩展能力的系统性适配。Llama以纯净Transformer结构成为通用底座,依赖llama.cpp和GGUF量化实现跨平台轻量推理;DeepSeek深度优化代码与数学推理,通过原生OpenAPI、FlashAttention-2及tensor parallelism显著降低API延迟;Qwen则采用模块化设计,支持视觉编码器(Qwen-VL)、生物计算(Qwen-B

weixin_29952383的博客 393

代码实现 —— 基于 STM32 的可见光通信系统课程设计

基于STM32F103ZET6,源码如需移植,需要修改定时器捕获通道引脚,及定时器,如果你也有这个课设任务,希望对你有所帮助。

不善挽留 1万+

golang(一)初识go

go简介 go语言诞生自2006年,于2009年发布并开源,2012年出现了第一个正式版本。近些年招聘中,go语言算是个小众岗位,只有少数大厂有招聘需求,如阿里,百度,京东等,由于它的特性,一般是高并发项目的优先选择。 go语言特性: 1. 垃圾回收 a. 内存自动回收,再也不需要开发人员管理内存 b. 开发人员专注业务实现,降低了负担 c. 只需要new分配内存,不需要释放 2. 天然并...

一个浪子 599

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Go语言学习(一):初识Golang

前言 最近一段时间接触了下go语言,很有兴趣,花时间研究了下,觉得可以学一学,然后就不多说了。Ubuntu下配置Go环境的可以参考下博文《Ubuntu 配置 Go 语言开发环境(Sublime Text+GoSublime)》,亲测可用。

时间文盲的记事板 1889

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

一、初识GoLang

golang自学手册# 系列文章目录 第一章 初始golang! 第二章 golang long 在哪儿? 第三章 学会欣赏编程哲学的美前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的

longtusoft的博客 290

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Go语言快速上手(一)】 初识Go语言

本篇文章着重讲解了GO语言的简介以及为什么要学习GO语言,后面讲解了GO语言的一些语法特性以及GO语言的变量与数据类型是怎样定义的

杭电码农-NEO的博客 3374

Go入门系列(一) 初识Go语言

本系列文章目录 展开/收起 Go入门系列(一) 初识Go语言 Go入门系列(二) 变量、指针、数据类型简介和作用域 Go入门系列(三) 基础类型——整型、浮点型、布尔类型和字符串 Go入门系列(四) 数组Array和切片Slice Go入门系列(五) 哈希表map Go入门系列(六) 结构体s...

jqsfjqsf的博客 576

一 初识GO语言

go语言配置环境变量 goLand首次使用配置

东风麦芽糖 432

【从零开始学习Go语言】一.初识Go语言

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。

一只特立独行的兔先森 1万+

一、Go语言初识

Go语言初识

张先森的博客 733

GO专栏 (一) ——— 初识Go语言

Go-In-Action @author 鲁伟林 记录《Go语言实战》中各章节学习过程,写下一些自己的思考和总结。希望维护管理此仓库,记录学习过程中部分心得,以与其他同行参考。 本博客中涉及的完整代码: GitHub地址: https://github.com/thinkingfioa/go-learning 本人博客地址: https://blog.youkuaiyun.com/thinking_fi...

thinking_fioa的博客 1878

【Go】Go Gin框架初识(一)

介绍了Golang的gin框架基础内容,包括如何获取请求参数、返回响应格式

weixin_62533201的博客 1751

参照Java学Go(一)—— 初识Go

    最近在学习使用golang,在学习新的语言时,如果可以对照着一门自己熟悉的语言来学习会容易很多,本人是名java程序猿,所以就对照着Java来学习,以”温故知新“的方式来记录一下学习过程。    刚开始,先从语言界定、环境搭建、helloword和包结构对比学习一下:一,语言界定先来总结一下:go和java一样,是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静...

mingjia1987的博客 2350

一、初识GO语言

Go是什么 Go 亦称为 Golang,是由谷歌开发的一个开源的编译型的静态语言。 Golang 的主要关注点是使得高可用性和可扩展性的 Web 应用的开发变得简便容易,Go 的定位是系统编程语言,对 Web 开发支持较好。 为何选择 Golang 既然有很多其他编程语言可以做同样的工作,如 Python,Ruby,Nodejs 等,为什么要选择 Go 作为服务端编程语言? 以下是我使用...

qq_31406873的博客 215

一、Go语言 初识

Go语言

猛男的博客 444

初识Go语言(一)

首先说说我为什么要去了解学习Go语言吧,首先在此之前我并没有接触过Go语言,其实主要原因是因为他的名字吧,(果然人不可貌相)当我第一次听到Go语言这个名词的时候我还以为这个Go是C语言中的Goto的Go,心想这样一种破坏编程结构的语言有什么好的呢?但是架不住朋友的安利,以及确实看到一些游戏公司在招这方面的程序员,就决定了解一下这门语言(真香了)。 下面来贴几个链接: ​​​​​地鼠文档 (topgoer.cn) (Go语言的吉祥物是几只可爱的地鼠,所以这个网站的作者取名地鼠文档)...

sky_down的博客 545

(一)初识go语言并进行环境搭建

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

liuhongbo11534的博客 2100
上一篇: 2019软件保研(推免)_华南理工_软件所_北大软微
下一篇: hexo+github+nexT搭建个人博客踩坑
softwareX4
博客等级 码龄9年 21粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值