not go 的三单do not缩写形式是什么么

一般现在时态及第三人称单数(附练习及答案)
第三人称单数问题
  一般现在时中,当主语是第三人称单数时,即常在动词原形后加-s或-es。
第三人称单数变化,现归纳总结如下:
1.人称代词he, she, it是第三人称单数。如:
He likes watching TV.他喜欢看电视。
She has lunch at twelve.她十二点吃午餐。 
It looks like a cat.它看起来像只猫。
2.单个人名、地名或称呼作主语;用第三人称单数。如:
①Han Mei looks like her mother.韩梅看起来像她的母亲。
②Beijing is in China.北京在中国。
③Uncle Wang often makes cakes.王叔叔经常做蛋糕。
3.单数可数名词或"this / that / the/ a +单数可数名词"作主语时,是第三人称单数。如:
 ①A horse is a useful animal.马是有用的动物。 ②This book is
yours.这本书是你的。
 ③That car is red.那辆小汽车是红色的。 ④The cat is Lucy's.这只猫是露茜的。
4.不定代词someone, somebody, nobody, everything, something等及指示代词this,
that作主语时,第三人称单数。
 ①Everyone is here.大家到齐了。 ②There is something wrong with the
watch.这块手表有毛病。
 ③This is a pen.这是一支钢笔。 ④That is an eraser.那是一块橡皮擦。
5.不可数名词作主语时为第三人称单数。如: ①The milk is in the glass. ②The bread is very
6.当数字或字母作主语时,看作第三人称单数。如: ①"6" is a lucky number."6" ②"I" is a
动词原形变第三人称单数的规则与发音规律同名词单数变复数大致相同,请认真观察。
1、大多数动词在词尾加“S”在清辅音后发音为[s],在浊辅音及元音后发音为 [z]。如:
①stop-stops [s] ; make-makes [s]
②read-reads [z] ; play-plays [z]
2、以辅音字母加“y”结尾的,要先将“y”变为“i”,然后在加“es”读[iz] 如:
fly-flies [z]; carry-carries [z]
study-studies [z]; worry-worries
3、以“s, x, ch, sh”结尾的,在词尾加“es”,发音为[iz] 如:
teach-teaches [iz]; watch-watches [iz]
4、以“o”结尾的动词,加“es”,读[z] 如:
go-goes [z] do-does [z]
注:下面几个动词变为单数时,原词的元音部分的发音发生了较大的变化,请注意记忆。 如:
1、do [du:]-does [dz]
2、say [sei]-says [sez]
以不发音字母“e”结尾的开音节词,如果尾音是[s],[z]时,加“s”后字母“e”发音, 与所加“s”
一起读做[iz]。 如:
close-closes [iz]
I.&写出第三人称单数:
wash_________ match _______guess______ study______ finish_________
go________ snow______ carry_________
II.&用所给动词的适当形式填空:
1. He________ TV every evening. (watch)
2. We always ________ to school on foot. (go)
3. Tom, with his classmates, often ______ football
after school. (play)
4. Your shoes _______ under the bed. (be)
5. ______ here and ______ by me. (come, stand)
6. His uncle usually _________ to work by bus.
7. I always ______ up at six in the
morning.(get)
8. John ________ like his father. (look)
III.&完成句子
  根据所给中文意思,在空白处填入适当词语完成句子。每空一词,请直接在答题纸上完成,不要在此页上作答。
  1.该吃晚饭了。
  it’s time to ________ ________.
  2.你想来点儿面包吗?
  would you ________ some ________ ?
  3.安娜太小,还不能上学。
  ann is ________ young ________ go to school.
  4.约翰跑得和我一样快。
  john runs ________ fast ________ me.
  5.布莱克太太经常在英语上帮助我们。
  mrs. black often ________ us ________ our english .
  6.老师让我们每天说英语。
  the teacher tells us ________ ________ english every day.
  7.为什么不让孩子们做他们喜欢的事情?
  ________ ________ let the children do what they like?
二、1. watches 2. go 3. plays 4. are 5. come, stand
6. goes 7. get, got
三、1. it’s time to have supper. 2. would you like some
3. ann is too young to go to school. 4. john runs as fast as
5. mrs. black often helps us with our english.
6. the teacher tells us to speak english every day.
7. why not let the children do what they like?
 &&&&&&&&&&&&&&&&&&&&&&&&&&&
一般现在时态
一、一般现在时的用法:
1、表示经常或者反复发生的动作. 如: 我每天吃午饭. I have lunch every day.
2、还表示现在存在的一种状态. 如:我姐姐是一位老师.My sister is a teacher.
3、客观真理,客观存在,科学事实。例如:The earth moves around the sun.地球绕着太阳转。
二、一般现在时态经常与often(经常)sometimes(有时)always(总是)usually(通常)等频率词连用,也经常与every
day(每天), every week(每周), every month(每月), every term(每学期), every
year(每年), once a week (一周一次),twice a year(一年两次)等表示时间的词连用。
三、第三人称单数问题
  一般现在时中,当主语是第三人称单数时,即常在动词原形后加-s或-es。
四、一般现在时分类:
1.一般现在时态分为be 动词的一般现在时。
1) be动词包括am,is,are. 中文为"是", 这三个词的用法要随着主语的变化而变化。 "am" 用于第一人称单数(I);
"is" 用于第三人称单数(he,she,it); "are "用于第一人称复数(we),第二人称单数和复数(you),
第三人称复数(they)。 可以记住以下顺口溜: am管 "我", is管",她,它,他", are管"大家"。
一般疑问句和否定句:把be 动词"am,is,are" 放在句首,回答时也要使用be动词;变为否定句时,把表示否定的not 放在
"am is are" 的后面, 其中可以简写为:is not---- isn't ;are not---- aren't;am
not 没有简写形式。注意:如果are not, is not放在句尾时,不能使用简写,必须写出整个单词。.
Am I a teacher? Yes, I am. (No, I am not.) Are you his friend? Yes,
you are. (No, you are not.)
Is she a nurse? Yes, she is. (No, she is not.)
否定句为:I am not a teacher. You are not his friend. She is not a
2)实义动词的一般现在时如果句子的动词不是be 动词 "am is are" 而是其他实义动词,
疑问句和否定句要借助于助动词"do"或者 "does", 也就是说be 动词和实义动词原形不能同时使用。 这里的
"do","does" 本身没有什么意义,只是帮助构成疑问句和否定句. 一般疑问句读时必须用降调."do"和
"does"的使用要随着人称的变化而变化。请看下面两组句子,注意区分他们的共同点和不同点。
I go to school every day. ------------- I don't go to school every
He goes to school every day. ------------He doesn't go to school
every day.
Do you go to school every day? -----------Does he go to school
every day?
Yes, I do. (No, I don't) --------------Yes, he does. (No, he
当主语是第三人称单数时,
肯定句为:主语+动词的s形式+宾语&&&&&&&&&&&&&&&&&&&&&&&&
否定句为:主语+助动词doesn't+动词原形+宾语
疑问句为:Does+主语+动词原形+宾语
肯定回答和否定回答也要使用助动词does.
注:1)第三人称单数用了 does 后面就不用动词的s形式了,而用动词原形.
2)变为疑问句,要在句首加"do" ; 变为否定句, 要在动词前面加"do not", 可以简写为 "don't".
一、把下列句子改成一般疑问句并做肯定、否定回答。
1.I usually get up at six o’clock.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&?
Yes,&&&&&&&
/No,&&&&&&&&&&&&&&&
2. We usually write e-mails to each other on Saturday
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?
&&&&&&&&&&&&&&&&&&&&&&/
&&&&&&&&&&&&&&&&&&&&&.
3. They have the same hobby.
&&&&&&&&&&&&&&&&&&&&&&&?
&&&&&&&&&&&&
&&&&&&&&&&&&&&&.
4.Suhai and Su yang like listening to music after school.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?
&&&&&&&&&&&&&&&&&.
/&&&&&&&&&&&&&&&&
5.Helen usually watches TV in the evening.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&.
二、用词的适当形式填空。
1.What time_________ his father_________(do) the work?
2.He _________(get) up at five o’clock.
3.__________ you _________(brush) your teeth every morning.
4.What ________ ( do ) he usually ________( do ) after
5.Tom ________ ( study ) English, Chinese, Maths, Science and
Art at school.
6. Kitty sometimes __________(go) to the park with his
7.At eight at night, she __________( watch ) TV with her
8. ________ Mike________( read ) English every day?
9.How many lessons________ your classmates______( have ) on
10.We often___________ ( play ) football in the playground.
( ) 1. _____ you have a book?
  A. Do B. Are C. Is D. Have
( )2. They _________ on a farm.
  A. working B. is work C. work D. is worked
( ) 3. Does Peter like to watch TV?
  __________.
  A. Yes, he like B. No, he doesn’t C. Yes, he’d like D. No, he
( )4. She doesn’t __________ her homework in the afternoon.
  A. doing B. to do C. does D. do
( )5. How ____________ Mr. Brown ___________ to America?
  A. do,go B. is,go C. does,go D. does,goes
( )6. Where’s my camera? I____________ it.
  A. am not finding B. am not seeing C. can’t find D. can’t look
( )7. How ___________ he go to work?
   He ___________ to work by bike.
  A.go B.goes C.go D.goes
( )8. ______ you usually late for school?
  No, _____________.
  A. D I am B. Dnot C. A I’m not D. A I
( )9. _____ she _____ home at six every day?
  A. Is , leave B. Does , leave C. Is , leaves D. Does ,
( )10. Mr. Yang ____________ English this term.
A.&&& teaches
our B. teaches us C. teachs us D. teach our
答案:二.1.does, do 2. gets 3. Do, brush 4. does, do 5. studies 6.
goes 7. watches 8. Does, read 9. do, have 10. play
三.1---5 A C B D C  6---10 C D C B B
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。当前位置:
>>>写出下列单词的第三人称单数形式。 1. go ________ see _______..
写出下列单词的第三人称单数形式。
1. go ________&&&& &see ________ 2. shop ________& catch ________ 3. be ________&&&&& grow ________ 4. dress ________ &play ________5. give ________&& do ________ 6. have ________ &guess _______7. like ________&&& spell _______ 8. begin ________ &know _______9. find ________&&& meet _______
题型:填空题难度:偏易来源:期中题
1. goes,&sees 2. shops, catches3.&is,&grows& 4. dresses, plays 5. gives, does 6. has,&guesses 7. likes, spells& 8. begins,&knows 9. finds,&meets
马上分享给同学
据魔方格专家权威分析,试题“写出下列单词的第三人称单数形式。 1. go ________ see _______..”主要考查你对&&单词、词组&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
单词、词组
根据最新人教版版和牛津版的初中英语教材的词汇量,一个水平较高的初中毕业生的词汇量应在2400左右。初中的单词和词组词汇量要求数量会不断增长。初中单词节选100例:1dryadj干的,干燥的2ill& adj 病的3hope& v 希望4composition& n 作文作品5 remember& v 记起,想起6 were& v 动词be(are)的过去式7 bit& n 一点儿,小片8 a bit& phr. 一点儿9 healthy& adj 健康的,健壮的10 grow up& phr. 成长,长大11 visit& v 参观,访问,拜访12 ago& adv 以前13 the day before yesterday& phr 前天14 enjoy& v 喜欢,享受...乐趣15 world& n 世界16 at the same time& phr. 同时17 a moment ago& phr. 刚才18 just now& phr. 不久以前,刚才19 reply& n & v 答复,回答20 by the way& phr. 顺便说,顺便问一下21 match& n 比赛,竞赛22 cold& adj 冷的,寒冷的23 drive& v 驾驶24 plan& n 计划25 diary& n 日记26 make telephone calls& phr. 打电话27 go out& phr. 外出,到外面28 India& n 印度29 went& v 动词go的过去式30 rain& v 下雨31 rained& v 动词rain的过去式32 momery& n 记忆力,存储器33 pack& v 打包,打行李34 everything& pron 每件事,每样东西,一切35 umbrella& n 伞,雨伞36 anyone& pron 任何人37 date& n 日期38 season& n 季节39 write down& phr. 写下,记下40 January& n 一月41 March& n 三月42 June& n 六月43 July& n 七月44 August& n 八月45 December& n 十二月46 spring& n 春天47 last& v 持续,耐久48 weather& n 天气49 warm& adj 暖和的,热情的50 come out& phr. (花)开,发(芽),出来51 heavily& adv 打量地,猛烈地,厉害地52 crop& n 庄稼,收成53 really& adv 确实,真正地54 snow& n & v 雪,下雪55 snowman& n 雪人56 all the year round& phr. 一年到头57 true& adj 真的,真实的58 nearly& adv 将近,几乎59 unlike& prep 不像,和...不同60 opposite& adj 对面的,相反的61 sunny& adj 晴朗的,阳光充足的62 cloud& n 云63 cloudy& adj 多云的,阴天的64 wet& adj 湿的65 rainy& adj 多雨的,下雨的66 wind& n 风67 windy& adj 有风的,风大的68 snowy& adj 多雪的,降雪的69 later& adv 以后,后来70 later on& phr. 后来,稍后71 ring& v (钟,铃等)响,摇铃72 ring up& phr. 打电话73 west& n & adj 西方、西部(的)74 strange& adj 奇怪的,陌生的75 sunshine& n 日光,阳光76 melon& n 瓜77 radio& n 收音机78 report& n & v 报导,报告79 north& n & v 北方(的),北部(的)80 south& n & v 南方(的),南部(的)81 at times& phr. 有时,偶尔82 northeast& n 东北,东北部83 temperature& n 温度84 above& prep 在...上面85 daytime& n 白天86 below& prep 在...下,低于87 northwest& n 西北,西北部88 lift& v (云,雾等)消散,(雨)停止89 worse&& adj & adv ( bad,ill的比较级)更坏,更差90 foggy& adj 有雾,多雾的91 low& adj 低的,浅,矮的92 birthday& n 生日93 invite& v 邀请,招待94 film& n 影片,电影95 hold& v 拿,握96 hold on& phr. (打电话时)等一等,不挂断97 message& n 消息,信息98 take/leave a message& phr. 捎/留口信99 ready& adj 准备好的,乐意的100 sandwich& n 三明治,夹心面包片初中词组总结:1.be born 出生于2.visit sb 拜访某人3.tell sb. sth. 告诉某人某事 tell sb.to do sth.告诉某人做某事4.tell sb&not to do sth.告诉某人不要做某事a)tell sb how to do sth 告诉某人怎样做某事b)go to a place to do sth 去某个地方做某事c)go to England to study English 去英国学习英语5.study at a middle school 在中学学习6. go boating 去划船 go fishing 去钓鱼7.go swimming 去游泳 go shopping 去购物 go skating 去滑冰8.at weekends 在周末9.at the age of 在……年龄10.come here at half past two every Saturday afternoon 每个星期六下午两点半来这儿11.take pictures 照相12.in one’s spare time 在业余时间13.come here to do sth. 来这儿做某事14.come in 进来15.sit down 坐下 stand up 起立16.ask sb. some questions 询问某人一些问题17.on May 2,1984 在日18.tell sb. the name of the street and the house number 告诉某人街道名字和房间号码19.like doing sth. 喜欢做某事 like to do sth.喜欢做某事20.become a teacher 成为一名教师 want to be a doctor 想成为一名教师21.return to China=come back to China 返回中国22.teach English at a famous medical college 在一所著名的医科大学教英语23.tall and healthy 个高又健康24.short and slim 个矮又苗条25.be clever and quick in doing things 在做事上聪明伶俐26.come here to learn singing 来这儿学唱歌27.tell sb.a funny story 给某人讲述有趣的故事28.on foot 步行a)on one’s way to school 在上学的路上b)on one’s way home 在回家的路上c)on one’s way to the hospital 在去医院的路上d)on one’s way to the cinema 在去电影院的路上e)on one’s way to see a film 在去看电影的路上29.see sb. do sth. 看见某人做某莫事 see sb.doing sth.看见某人正在做某事a)hear sb. do sth 听到某人做某事 hear sb. doing sth.听到某人正在做某事b)make sb.do sth 迫使某人做某事 help sb. (to) do sth.帮助某人做某事c)1et sb.do sth.让某人做某事 had better do sth.最好做某事30. fall to the ground 倒在地上31.go over 走过去,复习功课32. hurry to school 勿忙去上学33.be late for the first class 第一节课迟到34.say with a smile 微笑地说35.be glad to do sth.高兴做某事36.do a good thing (deed) 做一件好事37.fall ill=be i11 生病,患病38.take sb. to a hospital 把某人送到医院39.rain heavily 下大雨40.on the road 在公路上41.not know what to do 不知道该做什么42.just then 正在那时43.come up 走进,上来44.in front of 在……前面45.thank sb. again and again 反复感谢某人46.drive away (汽车)离开run away 跑开take away 拿走47.right away 立刻48.right now 此刻,刚才,现在49.get home 到家 get there 到达哪儿 get here 到达这儿50. yesterday morning 昨天晚上51.leave the hospital 离开医院52.no buses=not any buses 没有车53.say to sb.对某人说 say to oneself 自言自语54.fall off 跌落55.need to get up early 需要早起床56.hurt my arm 胳膊受伤57.What's wrong with you?=What's the matter with you? 你怎么了?58.do one's homework on the computer 在电脑上做作业59.have four English lessons 上四节英语课60.once a week 一周一次 twice a year 一年两次 three times a month 一个月三次61.do more listening and speaking 做大量的听说练习do some cleaning 扫除do some washing 洗衣服do some shopping 购物62.make good progress in English 在英语方面取得很大进步63.help a lot in our studies 在学习上给子很大帮助64.teach sb. English 教某人英语65.get to school 到达学校66.give sb.lessons 给某人上课67.ask sb.to do sth.要求某人做某事ask sb.not to do sth.要求某人不要做某事68.let sb. do sth.让某人做某事1et sb. not do sth.让某人不要做某事69.not……until 直到……才70.make one's lessons interesting 使某人的课上的很有趣71.tell sb. how to do sth.告诉某人怎样做某事72.try to learn new things be oneself 设法靠自己学一些新的知识73.want to be a history teacher 想成为一名历史老师74.grow up 长大75.in future 在将来76.computer room (电脑)机房77.language lab 语言室78.finish middle school 中学毕业79.want to become (be) a designer 想成为一名设计家80.wish to be doctor 希望成为一名医生81.an American boy 一个美国男孩儿82.study in a high school 在高中学习83.in Grade Eight 在八年级84.finish primary school 小学毕业85.start school at the age of seven=begin to school when I was seven 七岁开始上学86.move to Washington with his family 和他全家搬到华盛顿87.be interested in 对……感兴趣88.want to become a doctor of Chinese medicine 想成为一名中医89.come here to learn Chinese 来这儿学习中文90.a nice school 一所好的学校91.instead of 代替92.in many ways 在许多方面93.be different from 与……不同94.by the way 顺便说95.come back home 回家96.be sorry for 为…难过,遗憾97.feel sorry for 为…难过,遗憾98.burn away 燃烧没了99.open the door 开门100.take sb. in one's arms 拥抱某人101.have some medicine 吃药102.have a football match 进行一场足球比赛103.have a meeting 开会104.walk back 向后走105.give sth. back to sb. 把某物还给某人106. work through the night 通宵工作107.get through the examinations=pass the exam 通过考试108.happen to 发生l09.knock at the door 敲门110.want to do sth. 想做…111.fall down 掉下来112.begin to do sth. 开始做…113.have some tea 喝茶114.have sports 进行体育锻炼115.have a bad coId 得了重感冒116.have a good time 玩的很高兴117.keep back 向后退118.so…that 如此…以至于…
发现相似题
与“写出下列单词的第三人称单数形式。 1. go ________ see _______..”考查相似的试题有:
1539271338282415649236815011658850Go 语言的基本数据类型
0)变量声明
var 变量名字 类型 = 表达式
var num int = 10
其中&类型&或&= 表达式&两个部分可以省略其中的一个。
1)根据初始化表达式来推导类型信息
2)默认值初始化为0。
var num int
// var num int = 0
var num = 10 // var num int = 10
1.1)整型类型
类型名称有无符号bit数
等于cpu位数
等于cpu位数
与 int32 等价
与 uint8 等价
rune&类型是 Unicode 字符类型,和 int32 类型等价,通常用于表示一个 Unicode 码点。rune 和 int32 可以互换使用。
byte&是uint8类型的等价类型,byte类型一般用于强调数值是一个原始的数据而不是 一个小的整数。
uintptr&是一种无符号的整数类型,没有指定具体的bit大小但是足以容纳指针。 uintptr类型只有在底层编程是才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。
不管它们的具体大小,int、uint和uintptr是不同类型的兄弟类型。其中int和int32也是 不同的类型, 即使int的大小也是32bit,在需要将int当作int32类型的地方需要一个显式 的类型转换操作,反之亦然。
有符号整数采用 2 的补码形式表示,也就是最高 bit 位用作表示符号位,一个 n bit 的有 符号数的值域是从 -2^{n-1} 到 2^{n-1}&1。例如,int8类型整数的值域是从-128 到 127, 而uint8类型整数的值域是从0到255。
1.2)整型运算
二元运算符:算术运算、逻辑运算和比较运算,运算符优先级从上到下递减顺序排列
在同一个优先级,使用左优先结合规则,但是使用括号可以明确优先顺序。
算术运算符+、-、*和/可以适用与于整数、浮点数和复数,但是取模运算符%仅用于整数间的运算。 % 取模运算符的符号和被取模数的符号总是一致的。除法运算符/的行为则依赖于操作数是否 全为整数,比如5.0/4.0的结果是1.25,但是5/4的结果是1,因为整数除法会向着0方向截断余数。
两个相同的整数类型可以使用下面的二元比较运算符进行比较;比较表达式的结果是布尔类型。
not equal to
less than or equal to
greater than
greater than or equal to
个算术运算的结果,无论有无符号,超出的高位的bit位部分将被丢弃。如果原始的数值是有符号类型,而且最左边 的bit为是1的话,那么最终结果可能是负的。
布尔型、数字类型和字符串等基本类型都是可比较的,也就是说两个相同类型的值可以用 == 和 != 进行比较。
一元的加法和减法运算符:
一元加法 (无效果)
bit位操作运算符:
符号操作操作数是否区分符号
位运算 AND
位运算 XOR
位清空 (AND NOT)
注意&位操作运算符^作为二元运算符时是按位异或(XOR),当用作一元运算符时表示按位取反。
位操作运算符&^用于按位置零(AND NOT):对于表达式z = x &^ y, 如果对应y中某位bit位为 0 的话,结果z的对应的bit位等于x相应的bit位的值,否则 z 对应的bit位为0。
x && n 和x && n 的右操作数(n)必须为无符号数。
操作含义--
左移运算用零填充右边空缺的bit位
无符号数的右移运算用0填充左边空缺的bit位,有符号数的右移运算用符号位的值填充左边空缺的bit位
一般来说,需要一个显式的转换将一个值从一种类型转化位另一种类型,并且算术和逻辑运算的二元操 作中必须是相同的类型。虽然这偶尔会导致需要很长的表达式,但是它消除了所有和类型相关的问题, 而且也使得程序容易理解。
许多整形数之 间的相互转换并不会改变数值;它们只是告诉编译器如何解释这个值。但是对于将一个大尺寸的整数类 型转为一个小尺寸的整数类型,或者是将一个浮点数转为整数,可能会改变数值或丢失精度。 浮点数到整数的转换将丢失任何小数部分,然后向数轴零方向截断。
任何大小的整数字面值都可以用以0开始的八进制格式书写,例如0666;或用以0x或0X开头的十六进制格 式书写,例如0xdeadbeef。十六进制数字可以用大写或小写字母。
1.3)浮点数
Go语言提供了两种精度的浮点数,float32和float64。它们的算术规范由IEEE754浮点数国际标准定义, 该浮点数规范被所有现代的CPU支持。
这些浮点数类型的取值范围可以从很微小到很巨大。浮点数的范围极限值可以在math包找到。常量 math.MaxFloat32表示float32能表示的最大数值,大约是 3.4e38;对应的math.MaxFloat64常量大约是 1.8e308。它们分别能表示的最小值近似为1.4e-45和4.9e-324。
一个float32类型的浮点数可以提供大约6个十进制数的精度,而float64则可以提供约15个十进制数的精度。
函数math.IsNaN用于测试一个数是否是非数NaN,math.NaN则返回非数对应的值。虽然可以用math.NaN来 表示一个非法的结果,但是测试一个结果是否是非数NaN则是充满风险的,因为NaN和任何数都是不相等的。 如果一个函数返回的浮点数结果可能失败,最好的做法是用单独的标志报告失败。
nan := math.NaN()
fmt.Println(nan == nan, nan & nan, nan & nan) // "false false false"
Go语言提供了两种精度的复数类型:complex64和complex128,分别对应float32和float64两种浮点数精度。内置的complex函数用于构建复数,内建的real和imag函数分别返回复数的实部和虚部。
z := x + yi
x = real(z)
y = imag(z)
复数也可以用==和!=进行相等比较。只有两个复数的实部和虚部都相等的时候它们才是相等的。 math/cmplx包提供了复数处理的许多函数,例如求复数的平方根函数和求幂函数。
1.5)布尔型
一个布尔类型的值只有两种:true和false。if和for语句的条件部分都是布尔类型的值,并且==和&等比 较操作也会产生布尔型的值。一元操作符!对应逻辑非操作,因此!true的值为false。
布尔值可以和&&(AND)和||(OR)操作符结合,并且可能会有短路行为:如果运算符左边值已经可以确 定整个布尔表达式的值,那么运算符右边的值将不在被求值
布尔值并不会隐式转换为数字值0或1,反之亦然。必须使用一个显式的if语句辅助转换。
1.6)字符串
一个字符串是一个不可改变的字节序列。字符串可以包含任意的数据,包括byte值0,但是通常是用来包 含人类可读的文本。文本字符串通常被解释为采用UTF8编码的Unicode码点(rune)序列。
内置的len函数可以返回一个字符串中的字节数目(不是rune字符数目),索引操作s[i]返回第i个字节 的字节值,i必须满足0 &= i & len(s)条件约束。如果试图访问超出字符串索引范围的字节将会导致panic异常。
第i个字节并不一定是字符串的第i个字符,因为对于非ASCII字符的UTF8编码会要两个或多个字节。
子字符串&操作s[i:j]基于原始的s字符串的第i个字节开始到第j个字节(并不包含j本身)生成一个新字 符串。生成的新字符串将包含j-i个字节。不管i还是j都可能被忽略,当它们被忽略时将采用0作为开始位置,采用len(s)作为结束的位置。
其中+操作符将两个字符串链接构造一个新字符串。
字符串可以用==和&进行比较;比较通过逐个字节比较完成的,因此比较的结果是字符串自然编码的顺 序。
字符串值也可以用字符串面值方式编写,只要将一系列字节序列包含在双引号即可。
字符串的值是不可变的:一个字符串包含的字节序列永远不会被改变,当然我们也可以给一个字符串变 量分配一个新字符串值。
s := "left foot"
s += ", right foot"
这并不会导致原始的字符串值被改变,但是变量s将因为+=语句持有一个新的字符串值,但是t依然是包 含原先的字符串值。
在一个双引号包含的字符串面值中,可以用以反斜杠\开头的转义序列插入任意的数据。
垂直制表符
单引号 (只用在 '\'' 形式的rune符号面值中)
双引号 (只用在 "..." 形式的字符串面值中)
可以通过十六进制或八进制转义在字符串面值包含任意的字节。一个十六进制的转义形式是\xhh,其中两个h表示十六进制数字(大写或小写都可以)。一个八进制转义形式是\ooo,包含三个八进制的o数字(0到7),但是不能超过\377(\377为十进制的255)。每一个单一的字节表达一个特定的值。
原生字符串
一个原生的字符串面值形式是...,使用反引号代替双引号。在原生的字符串面值中,没有转义操作;全部的内容都是字面的意思,包含退格和换行,因此一个程序中的原生字符串面值可能跨越多行。唯一的特殊处理是会删除回车以保证在所有平台上的值都是一样的。
Unicode(&&)收集了这个世界上所有的符号系统,包括重音符号和其它变音符号,制表符和回车符,还有很多神秘的符号,每个符号都分配一个唯一的Unicode码点,Unicode码点对应Go语言中的rune整数类型。 通用的表示一个Unicode码点的数据类型是int32,也就是Go语言中rune对应的类型;它的同义词rune符文正是这个意思。
UTF8是一个将Unicode码点编码为字节序列的变长编码。UTF8编码使用1到4个字节来表示每个Unicode码点,ASCII部分字符只使用1个字节,常用字符部分使用2或3个字节表示。每个符号编码后第一个字节的高端bit位用于表示总共有多少编码个字节。如果第一个字节的高端bit为0,则表示对应7bit的ASCII字符,ASCII字符每个字符依然是一个字节,和传统的ASCII编码兼容。如果第一个字节的高端bit是110,则说明需要2个字节;后续的每个高端bit都以10开头。更大的Unicode码点也是采用类似的策略处理。
runes 0-127
110xxxxx 10xxxxxx
(values &128 unused)
1110xxxx 10xxxxxx 10xxxxxx
2048-65535
(values &2048 unused)
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
65536-0x10ffff (other values unused)
Go语言的源文件采用UTF8编码,并且Go语言处理UTF8编码的文本也很出色。unicode包提供了诸多处理 rune字符相关功能的函数(比如区分字母和数组,或者是字母的大写和小写转换等),unicode/utf8包 则提供了用于rune字符序列的UTF8编码和解码的功能。
Go语言字符串面值中的Unicode转义字符让我们可以通过Unicode码点输入特殊的字符。有两种形式:\uhhhh对应16bit的码点值,\Uhhhhhhhh对应32bit的码点值,其中h是一个十六进制数字。每一个对应码点的UTF8编码。
例如:下面的字母串面值都表示相同的值:
"\xe4\xb8\x96\xe7\x95\x8c"
"\u4e16\u754c"
"\U00754c"
Unicode转义也可以使用在rune字符中。下面三个字符是等价的: '世' '\u4e16' '\U00004e16'
对于小于256码点值可以写在一个十六进制转义字节中,例如'\x41'对应字符'A',但是对于更大的码点则必须使用\u或\U转义形式。因此,'\xe4\xb8\x96'并不是一个合法的rune字符,虽然这三个字节对应一个有效的UTF8编码的码点。
得益于UTF8编码优良的设计,诸多字符串操作都不需要解码操作。我们可以不用解码直接测试一个字符串是否是另一个字符串的前缀、是后缀、或者是包含子串测试。对于UTF8编码后文本的处理和原始的字节处理逻辑是一样的。
每一个UTF8字符解码,不管是显式地调用utf8.DecodeRuneInString解码或是在range循环中隐式地解码,如果遇到一个错误的UTF8编码输入,将生成一个特别的Unicode字符'\uFFFD',在印刷中这个符号通常是一个黑色六角或钻石形状,里面包含一个白色的问号(?)。
字符串和Byte切片
标准库中有四个包对字符串处理尤为重要:bytes、strings、strconv和unicode包。
strings包提供了许多如字符串的查询、替换、比较、截断、拆分和合并等功能。
bytes包也提供了很多类似功能的函数,但是针对和字符串有着相同结构的[]byte类型。 因为字符串是只读的,因此逐步构建字符串会导致很多分配和复制。在这种情况下,使用 bytes.Buffer 类型将会更有效。
strconv包提供了布尔型、整型数、浮点数和对应字符串的相互转换,还提供了双引号转义相关的转换。
unicode包提供了IsDigit、IsLetter、IsUpper和IsLower等类似功能。
每个函数有一个单一的rune类型的参数,然后返回一个布尔值。而像ToUpper和ToLower之类的转换函数将用于rune字符的大小写转换。所有的这些函数都是遵循Unicode标准定义的字母、数字等分类规范。 strings 包也有类似的函数,它们是ToUpper和ToLower,将原始字符串的每个字符都做相应的转换,然后返回新的字符串。
一个字符串是包含的只读字节数组,一旦创建,是不可变的。相比之下,一个字节slice的元素则可以自由地修改。
字符串和字节slice之间可以相互转换:
s := "abc"
b := []byte(s)
s2 := string(b)
将一个字节slice转到字符串的string(b)操作则是构造一个字符串拷贝,以确保s2字符串是只读的。
为了避免转换中不必要的内存分配,bytes包和strings同时提供了许多实用函数。下面是strings包中的 六个函数:
func Contains(s, substr string) bool
func Count(s, sep string) int
func Fields(s string) []string
func HasPrefix(s, prefix string) bool
func Index(s, sep string) int
func Join(a []string, sep string) strings
bytes包中也对应的六个函数:
func Contains(b, subslice []byte) bool
func Count(s, sep []byte) int
func Fields(s []byte) [][]byte
func HasPrefix(s, prefix []byte) bool
func Index(s, sep []byte) int
func Join(s [][]byte, sep []byte) []byte
它们之间唯一的区别是字符串类型参数被替换成了字节slice类型的参数。
bytes包还提供了Buffer类型用于字节slice的缓存。一个Buffer开始是空的,但是随着string、byte或[]byte等类型数据的写入可以动态增长,一个bytes.Buffer变量并不需要初始化,因为零值也是有效的。
当向bytes.Buffer添加任意字符的UTF8编码时,最好使用bytes.Buffer的WriteRune方法,但是 WriteByte方法对于写入类似'['和']'等ASCII字符效率会更高。
字符串和数字的转换
除了字符串、字符、字节之间的转换,字符串和数值之间的转换也比较常见。由strconv包提供这类转换功能。
几个常用函数:
函数名功能
strconv.Itoa()
整数到ASCII
strconv.FormatInt()
用不同的进制格式化数字
strconv.FormatUint()
用不同的进制格式化数字
strconv.Atoi()
将一个字符串解析为整数
strconv.ParseInt()
将一个字符串解析为整数
ParseInt函数的第三个参数是用于指定整型数的大小;例如16表示int16,0则表示int。在任何情况下, 返回的结果y总是int64类型,你可以通过强制类型转换将它转为更小的整数类型。
有时候也会使用fmt.Scanf来解析输入的字符串和数字,特别是当字符串和数字混合在一行的时候,它可 以灵活处理不完整或不规则的输入。
常量表达式的值在编译期计算,而不是在运行期。每种常量的潜在类型都是基础类型:boolean、string 或数字。 一个常量的声明语句定义了常量的名字,和变量的声明语法类似,常量的值不可修改,这样可以防止在 运行期被意外或恶意的修改。
和变量声明一样,可以批量声明多个常量;这比较适合声明一组相关的常量:
常量间的所有算术运算、逻辑运算和比较运算的结果也是常量,对常量的类型转换操作或以下函数调用 都是返回常量结果:len、cap、real、imag、complex和unsafe.Sizeof。
因为它们的值是在编译期就确定的,因此常量可以是构成类型的一部分,例如用于指定数组类型的长 度:
const IPv4Len = 4
// parseIPv4 parses an IPv4 address (d.d.d.d).
func parseIPv4(s string) IP {
var p [IPv4Len]byte
一个常量的声明也可以包含一个类型和一个值,但是如果没有显式指明类型,那么将从右边的表达式推断类型。
iota 常量生成器
iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都 写一遍初始化表达式。在一个const声明语句中,在第一个声明的常量所在的行,iota将会被置为0,然 后在每一个有常量声明的行加一。
type Weekday int
Sunday Weekday = iota
或者下面的例子:
type Flags uint
FlagUp Flags = 1 && iota // is up
FlagBroadcast
// supports broadcast access capability
FlagLoopback
// is a loopback interface
FlagPointToPoint
// belongs to a point-to-point link
FlagMulticast
// supports multicast access capability
随着iota的递增,每个常量对应表达式1 && iota,是连续的2的幂,分别对应一个bit位置。
无类型常量
许多常量并没有一个明确的基础类型。编译器为这些没有明确的基础类型的数字常量提供比基础类型更高精度的算术运算;你可以认为至少有256bit的运算精度。这里有六种未明确类型的常量类型,分别是无类型的布尔型、无类型的整数、无类型的字符、无类型的浮点数、无类型的复数、无类型的字符串。
通过延迟明确常量的具体类型,无类型的常量不仅可以提供更高的运算精度,而且可以直接用于更多的 表达式而不需要显式的类型转换。
只有常量可以是无类型的。当一个无类型的常量被赋值给一个变量的时候,或者是语句中右边表达式含有明确类型的值,如果转换合法的话,无类型的常量将会被隐式转换为对应的类型。
无论是隐式或显式转换,将一种类型转换为另一种类型都要求目标可以表示原始值。对于浮点数和复数,可能会有舍入处理。
对于一个没有显式类型的变量声明语法(包括短变量声明语法),无类型的常量会被隐式转为默认的变量类型。
注意默认类型是规则的:无类型的整数常量默认转换为int,对应不确定的内存大小,但是浮点数和复数常量则默认转换为float64和complex128。Go语言本身并没有不确定内存大小的浮点数和复数类型,而且如果不知道浮点数类型的话将很难写出正确的数值算法。
如果要给变量一个不同的类型,我们必须显式地将无类型的常量转化为所需的类型,或给声明的变量指 定明确的类型。
参考:《Go语言程序设计》(The Go Programming Language)
同步发表:
阅读(...) 评论()

我要回帖

更多关于 is not缩写形式 的文章

 

随机推荐