【GoRK3288】2.Go语法简要说明及GoRK3288结构

Go语言的语句很简单,写起来像是动态语言那样简单。不过虽说代码符号简单,但是刚刚接触的时候却是有些不适应,这里就先把使用 GoRK3288库 的时候需要用到的语法列举一下,其他高深的东西以后再去学习吧。

1.操作符:

+、-、*、/、%、&、|、^、<<、>>、==、!=、|= 等这些和C语言是一样的,不过在取反的时候就不是~符号了,而是^。跟亦或是同一个符号,怎么区分呢?单目操作是取反,双目操作是亦或。另外要将某一位置0的话 &= ^x是不对的,而是 &^= x,切记。

2.变量:

变量的声明可以用var来标识,如var i int = 0,变量名在前,类型在后,而且语句的结束不需要分号。对多个变量 赋初值var i, j = 0, 0

和某些动态语言类似,Go的变量可以不需要事先声明,可以根据函数的返回值自动判断变量的类型。如

i := GetIndex()。根据函数GetIndex()返回值的类型自动赋值给变量i,不过需要注意的是操作符变为 :=了,而对于已经声明的变量直接使用 = 来赋值。

3. 返回值:

返回值是Go语言和其他语言变化最大的地方之一,Go语言支持多返回值。例如:

func GetInfo() (Index int, Info string, Result float32) {}

一下子返回了三个值,而不需要再去定义个结构体,方便了很多。而且如果只想使用一个返回值而不关心其他的值的时候,可以这样接收:index, _, _ := GetInfo(),实在太方便了。

4.线程(协程):

前面说过,Go对于高并发做的很好,而高并发是通过多线程来实现的。在Go里使用的所谓线程,其实是一种比线程资源开销更小的协程,仅仅比堆栈占用的资源高一点点,所以理论上可以创建几十万个协程来并行工作。当然这只是理论上,不过创建几千个上万个协程一般足够使用了。

5.通道:

Go语言提供的消息通信机制被称为channel,可以在语言级别提供的goroutine间的通信方式。“不要通过共享内存来通信,而应该通过通信来共享内存。”,这句话说的就是通道在Go语言中的作用。通道的使用方法多种多样,一般先是定义个通道,一方写,另一方读,而读的一方在有消息到达前是阻塞的。例如:

ch := make(chan int) //创建通道

ch <- 1 //写消息到通道

msg := <- ch //从通道读消息到一个变量中

而其他更多的用法是 select  ,暂时用不到就不说了,希望了解详细用法的话请查询手册。

6. 流程控制:

if x == y { return } //条件判断部分没有()

没有while ... do ...或 do... while ...,Go语言里只有for {}

switch (x) {

case A:

case B, C, D: fallthrough

default: return

}

switch 不像C中用break来结束每一个case,如果需要的话使用fallthrough来达到这种效果。

7.Go关键字:

break case chan const continue default defer else fallthrough for func go goto
if import interface map package range return select struct switch type var

8.Go类型:

byte int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float32 float64 complex64 complex128 uintptr string

9.工程文件:

Go语言其实没有工程文件这个东西,类似的概念其实就是文件夹,根据文件夹包括的go文件以及引用情况来决定是否在一个工程内。但是每一个工程都必须有一个入口点,必须是package main来开头的,func main() {} 作为主函数所在的文件。有了这个文件才能正确的编译和运行。

暂且想到这么多,其他用到的东西以后再补充。

语法大概了解了,再来看看GoRK3288项目工程文件的结构。

目前包括的文件有:

1.RK3288.go

2.GRF.go

3.GPIO.go

4.PWM.go

5.TSADC.go

6.WDT.go

....

首先RK3288.go文件是一个基础文件, 对于内存的映射和释放是由它来完成的。这个文件本身和RK3288没有关系,一般不需要使用,只是在工程的开始时需要调用一句 defer RK3288.FreeRK3288() 用于在程序退出时释放资源。

其次是GRF.go文件,它的作用是设置RK3288每个端口的功能复用。当然已经被封装好,不需要直接调用。

这两个文件对工程而言是必须的,缺少将不能编译。其他的文件功能和文件名是一样的,不用多说,用不到的可以不包括在工程中。

每个文件的使用方法后面陆续说明。

GoRK3288库请在https://github.com/tjCFeng/GoRK3288下载。

时间: 2024-08-25 19:43:04

【GoRK3288】2.Go语法简要说明及GoRK3288结构的相关文章

编译器架构的王者LLVM——(5)语法树模型的基本结构

LLVM平台,短短几年间,改变了众多编程语言的走向,也催生了一大批具有特色的编程语言的出现,不愧为编译器架构的王者,也荣获2012年ACM软件系统奖 -- 题记 版权声明:本文为 西风逍遥游 原创文章,转载请注明出处 西风世界 http://blog.csdn.net/xfxyy_sxfancy 语法树模型的基本结构 上次我们看了Lex和Yacc的翻译文件,可能一些朋友并不了解其中的执行部分,而且,对这个抽象语法树是怎么构建起来的还不清楚.今天我们就再详细介绍一下如果方便的构建一棵抽象语法树(A

Markdown 语法简要介绍

=================MarkDown================= Markdown 是一种方便记忆.书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档. We believe that writing is about content, about what you want to say – not about fancy formatting. — Ulysses for Mac 标题 Markdown 支持两种标题的语法,类 Setext

HTML 语法简要总结

HTML基本语法 认识网页 网页主要由文字.图像和超链接等元素构成.当然,除了这些元素,网页中还可以包含音频.视频以及Flash等. 常见浏览器内核介绍 浏览器是网页运行的平台,常用的浏览器有IE.火狐(Firefox).谷歌(Chrome).Safari和Opera等.我们平时称为五大浏览器. 浏览器内核(理解) 浏览器内核又可以分成两部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎. 渲染引擎 它负责取得网页的内容(HTML.XML.图像

Markdown 语法简要规则

Markdown简介 Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记符号也不超过十个,这种相对于更为复杂的 HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果. Markdown 是一种用来写作的轻量级「标记语言」,它用简洁的语法代替排版,而不像一般我们用的字处理软件 Word

XPath语法简要

XPath是在XML文档中查找信息的语言,可对元素和属性进行遍历. 利用以下的XML内容. <bookshop> <book> <name>Introduction to Algorithms</name> <author>Thomas H. Cormen, etc.</author> <price>68.00</price> </book> <book> <name>Dee

Swift语法学习之 类和结构体

类和结构体 本页包含内容: 类和结构体对比 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合(collection)类型的赋值与复制行为 与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意: 通常一个类的实例被称为对象.然而在Swift 中,类和结构体的关系要比在其他语言中更加的密切,本章中所讨论的大部分功能都可以用在类和结构体上.因此,我们会主要使

Java05-Java基础语法(四)循环结构

循环结构(重复/迭代):根据条件重复执行部分语句 1.while循环结构 while(条件表达式){ 循环体语句; } 1)语法:a.while是关键字 b."条件表达式"必须用括号括起来 c."{}"表示循环的控制范围,若没有"{}",while的控制范围到其后第一个分号: 2)执行过程: (1)运算"条件表达式",若结果为真,转入(2):若结果为假,转入(3) (2)执行一次,循环体语句,转入(1) (3)退出循环 2.d

IT兄弟连 Java语法教程 流程控制语句 分支结构语句4

4  嵌套if-else条件语句 嵌套if语句是作为另一个if或else语句的目标的if语句.嵌套if语句在程序设计中非常普遍.Java中,关于嵌套if语句需要记住的是,else语句总是和同一代码块中最近的且没有else与之匹配的if语句相匹配,语法格式如下所示: if(判断条件A){ if(判断条件B){ A语句块 } if(判断条件C){ B语句块 }else{ C语句块 } }else{ D语句块 } 例:下面将演示嵌套if的执行流程: public class IfElseIfElseD

IT兄弟连 Java语法教程 流程控制语句 循环结构语句4

do-while循环 Java还有一种循环是do-while.与for.while这些在循环顶部判断条件表达式的语句不同,do-while是在循环底部进行条件表达式的检查.这意味着do-while循环至少要执行一次循环体.do-while循环的语法格式如下: do{ 循环体; }while(循环条件); 与while循环不同的是,do-while循环的循环条件后必须有一个分号,这个分号表明循环结束. 例:下面的程序演示了do-while循环的执行流程: public class DoWhileD