You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: params.go
    path of file: ./repos/sliver/vendor/github.com/Binject/shellcode/api
    
    the code of the file until where you have to start completion: package api

import "errors"

type ParamType byte

const (
	IP        ParamType = iota
	Port      ParamType = iota
	Entry     ParamType = iota
	Entry64   ParamType = iota
	ShellCode ParamType = iota
)

// Parameters - config arguments for shellcode generating modules
type Parameters struct {
	IP        string
	Port      uint16
	Entry     uint32
	Entry64   uint64
	ShellCode []byte
}

func (p Parameters) Require(types []ParamType) error {

	for _, t := range types {
		switch t {
		case IP:
			if len(p.IP) < 1 {
				return errors.New("Ip is a required parameter")
			}
    
func (p Parameters) Require(types []ParamType) error {

	for _, t := range types {
		switch t {
		case IP:
			if len(p.IP) < 1 {
				return errors.New("Ip is a required parameter")
			}
		case Port:
			if p.Port == 0 {
				return errors.New("Port is a required parameter")
			}
		case Entry:
			if p.Entry == 0 {
				return errors.New("Entry is a required parameter")
			}
		case Entry64:
			if p.Entry64 == 0 {
				return errors.New("Entry64 is a required parameter")
			}
		case ShellCode:
			if p.Port == 0 {
				return errors.New("ShellCode is a required parameter")
			}
		}
	}
	return nil
}