有一次听一个沙龙技术演讲,讲师说go是互联网时代的c,听了详细介绍以后感觉很赞,尤其是并行层面真正在语言层面上做了控制及特殊的内存管理机制等。。。
好吧,下面上先上helloWorld代码。(以后系列的博客也是以代码为主)
package main //这个是必须的,所有的go文件必须以 package开头
import "fmt" // ”fmt“是go必须要引入格式化I/O的库。如果要引入多个库import用( )号包裹所有的库。例如 import ( “fmt” “strconv”)
func main() { //这是主函数
fmt.Printf("hello world!")// fmt的Print()函数用于打印
}
这是最简单的一个go程序。
关于go程序的编译跟执行笔者是再win7 64bit机器用的LiteIDE工具,LiteIDE是由国人开发的一款go编译执行开发环境,用起来感觉挺不错的。第一次编译执行go程序需要配置工具的LiteEnv(主要是配置golang下载解压后的目录)
下面说一下go的一些变量定义:
go语言与其他语言不通的地方就是在变量类型放在变量后边 如下:
var i int;
var j bool;
给i跟j赋值
i=10;
j=true;
如果要定义很多变量会需要些 var,go也可以这样定义变量 如下:
var(
i int
j bool
)
golang还有自己的简便写法 变量名:=值 这种方式go会自动根据值定义其类型 如下:
i:=10;
j:=true;
go的int 类型根据硬件他们的长度是不同的,会分文int32 int64 。int int32 int64定义的变量是不可以直接赋值的。需要转换类型。
个人总结起来golang的几大优点:
1,简洁,go代码很简洁,能在短短的几行代码里做很多东西。代码简洁导致了代码更清晰。对比笔者吃饭用的java来说,减少了很多冗余,毕竟java是以方法为单元的,难免会有冗余。
2,并发控制好,go再os层面上独自封装了一层叫gorountines的轻量线程,由语言层面进行了并发控制,其他语言来说java也只是在语言层面上做了synchronized加锁控制。虽然java运行在jvm里,但实际上也没有脱离os层面,jvm也会调用os层面的线程。另外笔者熟悉的php,python等也有一些附加的线程库来写并发程序,实际也是调用os层面线程的模型。gorountines是一个轻量的线程,一秒切换的速度是远远快于线程的。
3,gorountines之间通讯交换数据要用channel完成。golang的并发模型是重新设计的。之前的语言例如java是通过共享来通讯(通过分享一段内存,各个内容之间通过加锁进行控制,这样根据加锁力度会造成程序复杂度会不同),golang是通过通过通讯来共享的,每个并行单元只管理自己的内容,意思是说,在gorountines之间根本就不用显示的进行加锁控制,而且强制通讯成本变低,这样通讯速度就会加快。还有channel是阻塞的。跟c的串行编程思想是一致的。因为channel是阻塞的,所以除了通讯功能之外,还可以用来做同步。(读阻塞,写阻塞)
4.再就是编译速度快,另外想说的是golang有很严格的规则,如果go程序里引入了没有用到的库,或者定义了一个程序里没有用到的变量,程序是编译不过去的。但是go的错误提示会很详细。
5.变量定义类型是定义在后面 这跟之前的很多大众语言都不一样,导致笔者经常犯这个错误,举例:var str string;
6.go简化并行开发有GC参与其中,这就不用关注需要关闭哪些变量,go会自动帮你做这些工作。类似java,解决c c++程序开发过程最经常用碰到的内存泄露问题。
7.另外go的所有编码都是基于Utf-8的。官方宣传视频讲写go程序会很happy,go用起来的感觉更像linux。。
下一讲会用代码的方式讲golang的控制语言,一些常用的go函数等。
(如果有写的不对的地方,希望看见能指出来,每周更新2篇博文,希望大家能监督,共同进步)
分享到:
相关推荐
Android 开发是移动应用开发领域的重要组成部分,尤其对于新手而言,"Hello, World!" 是入门的起点。在这个学习笔记中,我们将探讨如何创建第一个简单的 Android 应用,了解 Activity 和其生命周期,以及如何通过 ...
- **HelloWorld的重要性**:在软件开发领域,HelloWorld程序被视为一种仪式性的入门程序,用来验证环境配置是否正确,同时也帮助开发者熟悉基本的代码结构。对于Android开发者而言,HelloWorld同样具有重要意义。 -...
根据提供的信息,我们可以总结出这份文档是关于Go语言学习笔记的部分内容,主要涵盖了Go语言的基础概念、语法结构、数据类型以及并发模型等关键知识点。以下是对这些知识点的详细解析: ### Go语言概述 Go(也称作...
Go 入门的学习笔记,从零开始学 Go,做一个 Go 工程师。 持续更新... 如果你发现本项目有内容上的错误,欢迎提交 issues 进行指正。 文档指引 基础语法 - MD文档 基础语法 - Demo gRPC - Hello World 练手项目 -...
')`这段JavaScript代码会被执行,页面上会输出`Hello World!`。 **示例2:** ```html ('GOGOGO')"> ``` - **解释:** 当按钮被点击时,会弹出一个警告框显示`GOGOGO`。 ### JavaScript对话框 JavaScript提供了几...
n, s := 0x1234, "Hello, World!" ``` ### 数据结构 文档中提到了几种基本的数据结构: - **数组 (Array)**:固定长度的数据集合。 - **切片 (Slice)**:基于数组的一种动态数据结构,可以动态调整大小。 - **映射...
本笔记覆盖了 Go 语言的大部分基础知识,从简单的 HelloWorld 示例到复杂的并发编程,为初学者提供了一个全面的入门指南。通过深入理解和实践这些知识点,开发者可以有效地编写和维护 Go 语言应用程序。
谷歌师兄的leetcode刷题笔记Go Translate CLI(谷歌翻译) 通过使用 Go 制作的 CLI 进行 Google 翻译 安装 $ go install github.com/HotPotatoC/go-translate 概述 Usage: go-translate [options] Options: -s ...
### Go语言基础知识与核心概念 #### Go语言起源与项目背景 - **起源**: Go语言由Google公司的Robert Griesemer、Rob Pike及Ken Thompson三位工程师在2007年开始设计,并于2009年正式发布。 - **目标**: 旨在解决...
1. Go 语言基础 - 学习基本语法,包括变量、数据类型、运算符、控制结构(if、else、switch、for 等)、函数和数组。 - 资源推荐: - [Go 官方文档](https://golang.org/doc/) - [Tour of Go]...
Golang学习笔记(一):缘起及一个不一样的HelloWorld1 缘起2 安装go3 Hello World也是可以好好说道说道滴 :)3.1 编写hollo.go源代码3.2 hello.go代码说明3.3 执行程序3.4 编译程序4 结语 1 缘起 本人公司的项目后端...
- **Go语言特点**:Go是一种静态类型的编程语言,这意味着一旦变量被声明并赋予类型后,其类型就不能在运行时更改。 - **变量声明**:可以使用`var`关键字来声明变量,并为其指定类型,如果不指定类型,Go编译器...
p.innerText = "Hello, World!"; var form = document.forms["frm"]; form.txt.value = "Sample Text"; ``` #### 浏览器对象模型 (BOM) 细节 1. **Location 对象**:提供了对当前 URL 的读取和修改。 - 方法...
Go语言,又称Golang,是由Google公司设计的一种静态类型的、垃圾回收的、编译型的、并发型且具有垃圾回收功能的编程语言。它旨在提高开发效率,兼顾运行速度,使得开发者能够在保持高效性能的同时,享受到简洁的语法...
Go语言官方文档学习笔记是基于官方文档及个人学习Go的笔记,整理完成的Go语言快速入门课程。 第二季内容包括:安装VSCode、在VSCode中编写第一个Go程序、包、导入与导出名字、函数、多值返回、返回命名、变量及其...
Golang GraphQL服务器:服务于处理GraphQL查询的后端graphql-go服务器 使用webpack的Babel Transpiler工作流程,您可以用来开始使用Relay构建应用程序。 有关演练,请参见“。 笔记: 这基于graphql-go和graphql-...
### Android学习笔记——从HelloWorld开始 #### 一、Google的Android SDK介绍 自从Google发布了Android SDK以来,这款开源移动操作系统迅速吸引了众多开发者的关注。Android SDK为开发者提供了丰富的工具和API,...
HelloWorld示例分析 - **SDK安装与项目创建**:首先,安装Android SDK并创建一个新的Android项目。项目模板通常会包含一个最基础的Hello World示例。 - **代码解析**:在默认生成的`MainActivity`类中,可以看到...