Go语言的素数对象编程实现及其使用

来源:互联网 发布:珠海广电网络营业厅 编辑:程序博客网 时间:2024/05/18 07:52

有关Go语言的面向对象编程,看了几本书,看了若干例子也没有太明白。太惭愧啊!

后来看了一个例子,结合之前书上的内容,总算有点头绪了。

然而,自己的程序写出来编译后还是出来不少问题。

后来,在已有的程序的基础上,稍加改进,终于明白了一些问题。

有关Go语言的面向对象编程,编过一个之后,就不困难了,只需要注意若干细节就可以了。

Go语言与C语言、C++语言和Java语言还是有差异的,需要慢慢体会。


这里编写了一个素数对象程序,包括使用该对象的程序。虽然不是很完善,但是麻雀虽小五脏俱全,在这基础上可以演变出各种各样的面向对象的Go语言程序。这是一个样例!


Go语言程序(面向对象程序):

// myprime project myprime.gopackage myprimeimport ("math")const MAXN int = 800const PRIME_NUM int = 139type MyPrime struct {pflag [MAXN + 1]boolprime [PRIME_NUM + 1]int}func (mp *MyPrime) ESieve(n int) {mp.pflag[2] = truefor i := 3; i <= n; i += 2 {mp.pflag[i] = true}end := int(math.Sqrt(float64(n)))for i := 3; i <= end; i += 2 {step := i + iif mp.pflag[i] {j := i + stepfor j <= n {mp.pflag[j] = falsej += step}}}j := 2mp.prime[0] = 1mp.prime[1] = 2for i := 3; i <= n; i += 2 {if mp.pflag[i] {mp.prime[j] = ij++}}}func (mp *MyPrime) Init() {mp.ESieve(MAXN)}func (mp *MyPrime) GetPrime(n int) int {return mp.prime[n]}func (mp *MyPrime) GetPrimeNum() int {return PRIME_NUM}


Go语言主程序(使用对象的程序):

// mytest project main.gopackage mainimport ("fmt""myprime")func main() {mp := new(myprime.MyPrime)mp.Init()for i := 1; i <= mp.GetPrimeNum(); i++ {fmt.Printf("%d: %d\n", i, mp.GetPrime(i))}}

程序运行结果:

1: 22: 33: 54: 75: 116: 137: 178: 199: 2310: 2911: 3112: 3713: 4114: 4315: 4716: 5317: 5918: 6119: 6720: 7121: 7322: 7923: 8324: 8925: 9726: 10127: 10328: 10729: 10930: 11331: 12732: 13133: 13734: 13935: 14936: 15137: 15738: 16339: 16740: 17341: 17942: 18143: 19144: 19345: 19746: 19947: 21148: 22349: 22750: 22951: 23352: 23953: 24154: 25155: 25756: 26357: 26958: 27159: 27760: 28161: 28362: 29363: 30764: 31165: 31366: 31767: 33168: 33769: 34770: 34971: 35372: 35973: 36774: 37375: 37976: 38377: 38978: 39779: 40180: 40981: 41982: 42183: 43184: 43385: 43986: 44387: 44988: 45789: 46190: 46391: 46792: 47993: 48794: 49195: 49996: 50397: 50998: 52199: 523100: 541101: 547102: 557103: 563104: 569105: 571106: 577107: 587108: 593109: 599110: 601111: 607112: 613113: 617114: 619115: 631116: 641117: 643118: 647119: 653120: 659121: 661122: 673123: 677124: 683125: 691126: 701127: 709128: 719129: 727130: 733131: 739132: 743133: 751134: 757135: 761136: 769137: 773138: 787139: 797

程序说明:

1.需要创建一个包项目,包名为myprime

2.需要定义一个结构,结构名为MyPrime,对象的变量放在结构体中

3.定义若干方法,似乎方法名需要以大写字符开头

4.主程序中的对象变量,照猫画虎即可("mp := new(myprime.MyPrime)"),需要用new

5.有了对象,就可以调用方法了

6.其他与面向对象编程类似